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

 更新时间:2013年02月21日 09:59:24   作者:  
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

相关文章

  • Hive-SQL查询连续活跃登录用户思路详解

    Hive-SQL查询连续活跃登录用户思路详解

    这篇文章主要介绍了Hive-SQL查询连续活跃登陆的用户,活跃用户这里是指连续2天都活跃登录的用户,本文给大家分享解决思路及sql语句,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • SQL Server日期时间和字符串之间的转换方法实例

    SQL Server日期时间和字符串之间的转换方法实例

    处理原始数据时,您可能经常会遇到存储为文本的日期值,将这些值转换为日期数据类型非常重要,因为在分析过程中日期可能更有价值,下面这篇文章主要给大家介绍了关于SQL Server日期时间和字符串之间的转换方法,需要的朋友可以参考下
    2023-06-06
  • SQLServer EVENTDATA()函数来获取DDL 触发器信息

    SQLServer EVENTDATA()函数来获取DDL 触发器信息

    SQL Server 2005/2008中可以使用EVENTDATA函数来获取DDL触发器的上下文,从而在ROLLBACK之前截获DDL信息。EVENTDATA返回XML字段,下面的例子显示如何截获Drop Table的DDL信息。
    2009-07-07
  • SQLServer 数据库备份过程中经常遇到的九种情况

    SQLServer 数据库备份过程中经常遇到的九种情况

    SQLServer 数据库备份过程中经常遇到各种问题,大家可以参照下面的问题,来分析下,快速的解决问题。
    2009-07-07
  • SQL Server:触发器实例详解

    SQL Server:触发器实例详解

    触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。本篇文章讲诉了SQL Server:触发器实例,有兴趣的可以了解一下。
    2016-12-12
  • SQL Server数据库创建表及其约束条件的操作方法

    SQL Server数据库创建表及其约束条件的操作方法

    这篇文章主要介绍了SQL Server 创建表及其约束条件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • 调整SQLServer2000运行中数据库结构

    调整SQLServer2000运行中数据库结构

    这篇文章主要介绍了调整SQLServer2000运行中数据库结构,十分实用的一个功能,这里推荐给大家,有需要的小伙伴可以参考下。
    2015-04-04
  • 复习一下sql server的差异备份

    复习一下sql server的差异备份

    复习一下sql server的差异备份...
    2007-03-03
  • 防御SQL注入的方法总结

    防御SQL注入的方法总结

    这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下
    2015-08-08
  • Windows环境下实现批量执行Sql文件

    Windows环境下实现批量执行Sql文件

    这篇文章主要介绍了Windows环境下实现批量执行Sql文件的相关资料,需要的朋友可以参考下
    2021-10-10

最新评论