Sql Server:多行合并成一行,并做分组统计的两个方法

复制代码 代码如下:

--创建 test 表 ,插入数据

CREATE TABLE test(code varchar(50), [values] varchar(10),[count] int)

INSERT test SELECT '001', 'aa',1

UNION ALL SELECT '001', 'bb',2

UNION ALL SELECT '002', 'aaa',4

UNION ALL SELECT '002', 'bbb',5

UNION ALL SELECT '002', 'ccc',3;

--方法一

--将多行合并成一行,并做分组统计

SELECT code,

       [values] =

       stuff(b.[values].value('/R[1]', 'nvarchar(max)'),

,

,

             ''),[count]

  FROM (SELECT  code,sum([count]) as [count]

          FROM test

         GROUP BY code) a

 CROSS apply (

        SELECT [values] =(

            SELECT N',' + [values] FROM test

              WHERE code = a.code

                         FOR XML PATH(''), ROOT('R'), TYPE

        )

) b;

--方法二

---SQL2005中的新解法   使用XML

SELECT code, data=STUFF((SELECT ','+[values] FROM test t WHERE code=t1.code FOR XML PATH('')), 1, 1, ''),sum([count]) as [count]

FROM test t1

GROUP BY code

--查询结果

--001    aa,bb    3

--002    aaa,bbb,ccc    12

drop table test

时间: 2024-08-30 03:51:24

Sql Server:多行合并成一行,并做分组统计的两个方法的相关文章

sql2个不同表有相同的列名,需要把2个表中相同的行合并成一行

问题描述 sql2个不同表有相同的列名,需要把2个表中相同的行合并成一行 sql2个不同表有相同的列名,需要把2个表中相同的行合并成一行,SQL要怎么写,用union all相同的行是分开,不是合并在一起的,哪位大神告知,谢谢! 解决方案 先union,然后按照某些条件group by 解决方案二: 用关联查询, inner join ,left join ,right join , 我不知道我理解的对不对. 解决方案三: 直接用UNION就行了,UNION会将重复的行自动去掉.将我只是理解你说

word中将奇数行和偶数行合并成一行的方法技巧

  方法1 1.在Word中将文本转换为含两列的表格.全选后依次点:表格-转换-文本转换成表格(X). 2.将表格复制到Excel,在空白列填充"奇偶"文字.在第一二行空白列分别填上奇偶,选中这两个单元格,光标移到第二个单元格右下角时变为+,按住鼠标左键往下拖动,完成填充. 3.复制粘贴表格回到Word,将表格转换为文字.全选后依次点:表格-转换-表格转换成文本(B). 4.将"奇和回车符"一起全部替换为空白,再将"偶"全部替换为空白.依次点:编

WPS怎么将多行文字快速合并成一行文字?

  WPS怎么将多行文字快速合并成一行文字?          1.在计算机桌面的Wps演示图标上双击鼠标左键,将其打开运行.如图所示; 2.在打开的Wps演示程序窗口,打开"插入"菜单选项卡,并点击插入工具栏中的"公式"选项按钮.如图所示; 3.点击公式选项后,会打开"公式编辑器"对话框.如图所示; 4.在公式编辑器对话框中,选择一个四行一列的矩阵.如图所示; 5.接着在编辑器中输入文字信息,不要按回车键换行,可以利用tab键换行.如图所示;

scala-spark中怎么将读取某几行数据合并成一行啊? 新手 谢谢 !

问题描述 spark中怎么将读取某几行数据合并成一行啊? 新手 谢谢 ! 例如图片里说的 谢谢啦 数据是读取的外部csv文件 麻烦啦 求大神指教一下 解决方案 sehll脚本将几行输出合并成一行显示 解决方案二: http://bbs.csdn.net/topics/391872110

mysql如何实现多行查询结果合并成一行_Mysql

利用函数:group_concat(),实现一个ID对应多个名称时,原本为多行数据,把名称合并成一行. 其完整语法: GROUP_CONCAT(expr) 该函数返回带有来自一个组的连接的非NULL值的字符串结果.其完整的语法如下所示: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR st

T-SQL行合并成列与列拆分成行

原文:T-SQL行合并成列与列拆分成行   本文出处:http://www.cnblogs.com/wy123/p/6910468.html      感觉最近sql也没少写,突然有一点生疏了,对于用的不是太频繁的一些操作,时间一久就容易生.   多行的某一个列合并成一个列 CREATE TABLE TestColumnMergeAndSplit ( Id int Identity(1,1), BusinessId int, BusinessValue varchar(20) ) GO INSE

SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)

原文:SQL Server 动态行转列(参数化表名.分组列.行转列字段.字段值) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL,动态列字段: 方法三:使用PIVOT关系运算符,静态列字段: 方法四:使用PIVOT关系运算符,动态列字段: 扩展阅读一:参数化表名.分组列.行转列字段.字段值: 扩展阅读二:在前面的基础上加入条件过滤: 参考文献(R

SQL Server命令行

      本文来源于网络收集,Mark一下. 1.登陆     osql -S localhost -U sa -P 123456         T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言.T-SQL 提供标准 SQL 的 DDL 和 DML 功能,加上延伸的函数.系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性. C:\Windows\

怎么把listview的两行合并成一行,两者的表头并列显示

问题描述 怎么把listview的两行合并成一行,两者的表头并列显示 怎么把listview的两行合并成一行,两者的表头并列显示,listview能不能制作分栏的效果? 解决方案 http://bbs.csdn.net/topics/390740772 解决方案二: 看你 用什么语言了,有的支持分栏,有的不支持,你需要自定义,然后自己绘制效果 解决方案三: 不太懂你的意思.对于Android来说,我初步理解为:你可以设置ListView 的 drivider 为 @null,然后在每个Item的