当前位置:  数据库>sqlserver

Sql Server多行合并及分组查询的例子

    来源: 互联网  发布时间:2014-08-29

    本文导语:  来看下面这个例子。   代码示例: --创建 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 SEL...

来看下面这个例子。
 

代码示例:

--创建 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

附1,Sql Server 分组统计并合计总数及WITH ROLLUP应用

WITH ROLLUP 在生成包含小计和合计的报表时,ROLLUP 运算符很有用。ROLLUP 运算符生成的结果集类似于 CUBE 运算符所生成的结果集。
 

代码示例:
SELECT [Source], COUNT(*) AS OrderTotal FROM [ExternalOrder]
Where OrderStatus=1 AND (CheckPayment=1 ) and TicketDate >= '2012-11-1' AND TicketDate < '2012-12-1'
GROUP BY [Source]
WITH ROLLUP Order by [Source] desc

结果集:
 

Source OrderTotal
ZongHengV2 215
ZongHeng 3889
YixingSky 3919
YiSkyV2 901
Wanggou 1034
Uni800 1151
TaoBao 3876
ShanglvPT 897
Shanglvbao 426
Qunar 9878
PiaoMeng 429
KuXun 1549
JinRi 2661
HangTuo 140
HangLvTong 7
EasyGo 501
Aooxing 5458
AirPP 3299
yi 8677
Book 2401
19479
NULL 70787

附2,一个sql分组统计的例子
现有人口信息表,表中有字段年龄(整型),性别(字符)
要求统计不同年龄段的男女比例,形成如下表格
 

年龄          男       女
---------------------------
18以下
18-30
30-40
40-50
50-60
60以上
 

实现分组查询统计的sql实例:
 

代码示例:
select 年龄,sum(男),sum(女) 
from 

    select 
          case when 年龄=18 and 年龄=30 and 年龄=40 and 年龄=50 and 年龄=60 then '60以上'  
          else '其他'  end end end end end as 年龄, 
 
          case when 性别='男' then 1 else 0 end as 男, 
 
          case when 性别='女' then 1 else 0 end as 女 
     from 人口信息表 
) as T 
group by T.年龄 
order by T.年龄

    
 
 

您可能感兴趣的文章:

  • Sql Server多行合并一行 sql分组统计
  • 经典sql代码--合并多行的某一列值
  • sql server多行数据拼接的实例方法
  • sql server 多行数据拼接的语句实例
  • Sql Server:多行合并成一行,并做分组统计的两个方法
  • Sql function 多行中的列合并为一行一列的方法
  • SQL 合并多行记录的相同字段值
  • SQL 合并多行记录的方法总汇
  • 很有意思的SQL多行数据拼接
  • sql server中合并多行记录的方法总汇
  • oracle—SQL技巧之(二)WMSYS.WM_CONCAT函数实现多行记录用逗号拼接在一起
  • SQL分组排序去除重复实例
  • sql分组查询(按组内个数排序)
  • SQL分组排序去重复的小实例
  • SQL分组统计简单例子
  • 显示同一分组中的其他元素的sql语句
  • sql中获取分组排序后数据方法实例
  • SQL语句分组获取记录的第一条数据的方法
  • SQL分组查询实例解析
  • sql语句获取分组排序后数据
  • sql server分组排序之row_number()over函数的使用
  • Sql Server 分组统计并合计总数(WITH ROLLUP用法)
  • sql分组排序与分组统计技巧
  • sql server 2000/2005/2008中一句话完成分组后加序号
  • sql获取分组排序后数据的脚本
  • sql server分组查询与排序的例子
  • sql server数据分组查询脚本分析
  • SQL分组排序与分组查询统计
  • Sql Server 分组统计并合计总数及WITH ROLLUP应用
  • 以数据库字段分组显示数据的sql语句(详细介绍)
  • SQL Server分组排序提取数据的代码举例
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sql server 中合并某个字段值的实例
  • sql 查询结果合并union all用法_数据库技巧
  • 深入SQL SERVER合并相关操作Union,Except,Intersect的详解
  • mssql 两表合并sql语句
  • oracle 合并查询 事务 sql函数小知识学习
  • sql合并查询实例 sql子查询教程
  • 合并SQL脚本文件的方法分享
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server统计SQL语句执行时间的脚本
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
  • java命名空间java.sql接口statement的类成员方法: execute定义及介绍
  • sql2005 大数据量检索分页的sql代码
  • java命名空间java.sql接口resultset的类成员方法: getcursorname定义及介绍
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • java命名空间java.sql接口resultsetmetadata的类成员方法: getcolumntype定义及介绍
  • 微软网站下载的Ms SQL Server2000 JDBC Driver,必须用英文版的SQL server2000吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3