create table tb ([id] int,[name] varchar())
insert into tb
select ,'aa' union all
select ,'bb' union all
select ,'cc' union all
select ,'dd' union all
select ,'ee' select * from tb
--查询
select
id,
name=stuff((select ','+name from tb where id=t.id for xml path('')),,,'')
from
tb t
group by
id 方法二: CREATE FUNCTION GET_STRING(@ID INT)
RETURNS VARCHAR()
AS
BEGIN
DECLARE @NAME VARCHAR()
SELECT @NAME=ISNULL(@NAME+',','')+NAME FROM TB WHERE ID=@ID
RETURN @NAME
END SELECT ID ,DBO.GET_STRING(ID)NAME FROM TB GROUP BY ID -----------------------------------------------------------------------
在oracle中,是有相对应的函数,sys_connect_by_path函数。 先在这里把oracle的函数实现也写下吧 select id
,itrim(max(sys_connect_by_path(name,','))) as name
from
(select id
,name
,lead(rnFirst) over(partition by no order by rnFirst)rnNext
from
(select a.id
,a.name
,row_number() over(order by a.id,a.name desc) rnFirst
from @t a) tmpTable1
) tmpTable2
start with rnNext is null
connect by rnNext = PRior rnFirst
group by id 以上是实现oracle中的行转列方式。 ********************************************下面我们来看一下sqlserver的,因为sqlserver没提供类似的函数,不知道sqlserver2012提供没 不过sqlserver支持起来也很简单,使用cross apply和for xml path组合来用,这两个单独都知道是怎么回事,怎么使用,但是真不知道还有它俩组合来完成这个功能的,感到很是不可思议,这里要感谢下网络上的人,原来自己写东西都是把所学到的知识记录到本机,从不放到网上,也可能是最近吧,好多工作不会,都是通过网络帮助,就把我所知道的东西也都放到网上来,大家一起学习。 sqlserver: select id, SUBSTRING(names, , len(names)-) from @t AS A cross APPLY
(SELECT NAME + ',' FROM @t AS B WHERE A.id = B.id FOR XML PATH('')) D (names) GROUP BY id, names

sql server 使用for xml path 将1列多行转换为字符串连接起来的更多相关文章

  1. sql server 使用for xml path 将1列多行转换为字符串连接起来,俗称 sql 合并字符

    由于项目的原因,需要将一些记录分类汇总,但还要列出相关的明细,这样的需求我还是第一次遇到,蛋疼了,还是请求一下度娘吧.搜索一番还是有结果,请看以下例子: create table tb ([id] i ...

  2. sql server的for xml path与变通的行转列

    SQL Server中有提供一个FOR XML PATH的子句(不知道能不能叫函数),用来将查询结果行输出成XML格式,我们可以通过这个语法做一些变通实现一些特定的功能,比如说行转列.要会变通的话,当 ...

  3. Sql Server 之 for xml (path,raw,auto,root)

    1.for xml path('str') select ID,CreateTime  from dbo.ArticleInfo for xml Path('mytitle') 结果:(注意:如果是s ...

  4. [SQL Server]一列多行转换为字符串

    在 SQL Server 中,如何将多行数据变成一个字符串保存. skill 投石 挖矿 刮痧 上面三行数据想要得到结果为:投石,挖矿,刮痧 有两种方式: 拼接字符串. 使用 for XML 首先创建 ...

  5. sql查询语句for xml path语法

    [原地址] for xml path作用:将多行的查询结果,根据某一些条件合并到一行. 例:现有一张表 执行下面语句 select Department, (SELECT Employee+',' F ...

  6. 解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during ...HRESULT: 0x80070422(注意尾部的错误号)

    解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during . ...

  7. SQL Server分区表,能否按照多个列作为分区函数的分区依据(转载)

    问: Hi, I have a table workcachedetail with 40 million rows which has 8 columns.We decided to partiti ...

  8. sql server中对xml进行操作

    一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和参数.为了更好地支持 XM ...

  9. SQL Server 2005的XML数据修改语言(XML DML)

    转:http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLDML.mspx?mfr=true 作为对XQuery语言的扩展,XML ...

随机推荐

  1. [TCO2013]DirectionBoard

    题意:给一个网格,每个格子有一个方向表示在这个格子上要往哪个方向走,你可以改变某些格子的方向,问最少多少次操作使得从任意格子出发都能回到这个格子 woc这都不会我还是回家种田去吧... 题目的要求是改 ...

  2. 【贪心】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A. String Reconstruction

    在每个给出的子串的起始位置打个标记,记录的是从这里开始的最长子串. 然后输出的时候就扫,如果遇到开始位置,就从这里开始输出,如果其后被更长的覆盖,就跳转到更长的串进行输出. 如果位置没被覆盖,就输出' ...

  3. String类的compareTo()和compareToIgnoreCase()

    compareTo()的返回值是int,它是先比较对应字符的大小(ASCII码顺序) 1.如果字符串相等返回值0 2.如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值 ...

  4. NOIP2014 解题报告·水渣记

    Day 1: 第一次参加noip.小激动,小紧张,这些正常的情绪就不用说了.唯一值得一提的是 我早上步行去郑大工学院的时候迷路了,直接转进了隔壁的河南农大,绕了半天找不到机房,还给几个同学打了电话可就 ...

  5. oracle增加表空间的四种方法

    1. 查看所有表空间大小 select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_nam ...

  6. 判断 Selite中标存在或者字段存在的方法

    判断表存在的方法很简单,网上很多: SELECT COUNT(*) FROM sqlite_master where type='table' and name='%s'" % tname; ...

  7. 激活Debian 7 的桌面(把图标放在桌面上)

    转:http://www.acyoo.com/archives/3017.html Debian 7的默认桌面是Gnome 3,  刚装好时无法在桌面进行任何操作,不过只需要设置一下就可以了: 左上角 ...

  8. 查看mysql服务器连接

    查看服务器连接,排查连接过多,查看连接状态时特别有用! 命令: show full processlist 作用: 显示当前运行的线程以及状态,也可以根据该命令来查看服务器状态. Id: 连接Id.U ...

  9. 【Sets】使用Google Guava工程中Sets工具包,实现集合的并集/交集/补集/差集

    获取两个txt文档的内容~存储进集合中求集合的并集/交集/补集/差集 package com.sxd.readLines.aboutDB; import java.io.BufferedReader; ...

  10. PTCRS 目前投资最成功的的PTC站点

    PTCRS算是我投资的比较成功的一个PTC网站,因此首先和大家介绍一下,因为PTC最开始的几个月盈利空间非常大,即使这样,在这20多天里面站长也已经稍微调低了盈利水平. 目前基本上Golden会员租赁 ...