文档章节

多个汇总列转换为行记录 mssql

深圳大道
 深圳大道
发布于 2016/12/29 15:33
字数 494
阅读 9
收藏 0
--1.  多个汇总列转换为行记录。
/*--
	下面的示例将列Quarter水平显示,统计每年(列Year)的数据(列Quantity)合计
	平均价格(列Price)。在处理平均价格和总金额时,由于聚合函数会把处理结果转换为float
	所以使用了CAST函数将数据转换为decimal并保留两位小数。
--*/
DECLARE @t TABLE(Year int,Quarter int,Quantity decimal(10,1),Price decimal(10,2))
INSERT @t SELECT 1990, 1, 1.1, 2.5
UNION ALL SELECT 1990, 1, 1.2, 3.0
UNION ALL SELECT 1990, 2, 1.2, 3.0
UNION ALL SELECT 1990, 1, 1.3, 3.5
UNION ALL SELECT 1990, 2, 1.4, 4.0
UNION ALL SELECT 1991, 1, 2.1, 4.5
UNION ALL SELECT 1991, 2, 2.1, 4.5
UNION ALL SELECT 1991, 2, 2.2, 5.0
UNION ALL SELECT 1991, 1, 2.3, 5.5
UNION ALL SELECT 1991, 1, 2.4, 6.0

--查询处理
SELECT Year,
	Q1_Amount=SUM(CASE Quarter WHEN 1 THEN Quantity END),
	Q1_Price=CAST(AVG(CASE Quarter WHEN 1 THEN Price END) AS DECIMAL(10,2)),
	Q1_Money=CAST(SUM(CASE Quarter WHEN 1 THEN Quantity*Price END) AS DECIMAL(10,2)),
	Q2_Amount=SUM(CASE Quarter WHEN 2 THEN Quantity END),
	Q2_Price=CAST(AVG(CASE Quarter WHEN 2 THEN Price END) AS DECIMAL(10,2)),
	Q2_Money=CAST(SUM(CASE Quarter WHEN 2 THEN Quantity*Price END) AS DECIMAL(10,2))
FROM @t
GROUP BY Year
/*--结果
Year  Q1_Amount  Q1_Price   Q1_Money  Q2_Amount  Q2_Price  Q2_Money
------- ----------------- --------------- ----------------- ----------------- -------------- ----------------
1990  3.6         3.00       10.90       2.6          3.50      9.20
1991  6.8         5.33       36.50       4.3          4.75      20.45
--*/


/*=====================================================*/



--2. 多个列转换为行记录。
/*--
	下面的示例中,按照列Groups分组,统计不同的Item、Color的Quantity合计数据
	并且将列Item和Color的统计结果水平显示。
--*/

DECLARE @t TABLE(Groups char(2),Item varchar(10),Color varchar(10),Quantity int)
INSERT @t SELECT 'aa','Table','Blue', 124
UNION ALL SELECT 'bb','Table','Red',  -23
UNION ALL SELECT 'bb','Cup'  ,'Green',-23
UNION ALL SELECT 'aa','Chair','Blue', 101
UNION ALL SELECT 'aa','Chair','Red',  -90

--查询处理
SELECT Groups,
	[Table]=SUM(CASE Item WHEN 'Table' THEN Quantity END),
	[Cup]=SUM(CASE Item WHEN 'Cup' THEN Quantity END),
	[Chair]=SUM(CASE Item WHEN 'Chair' THEN Quantity END),
	[Blue]=SUM(CASE Color WHEN 'Blue' THEN Quantity END),
	[Red]=SUM(CASE Color WHEN 'Red' THEN Quantity END),
	[Green]=SUM(CASE Color WHEN 'Green' THEN Quantity END)
FROM @t
GROUP BY Groups
/*--结果
Groups Table       Cup       Chair        Blue       Red       Green 
--------- --------------- ---------------- ----------------- --------------- ---------------- --------------- 
aa     124       NULL      11          225        -90         NULL
bb     -23       -23         NULL      NULL      -23         -23
--*/

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/9003747

深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
SQL 2017 SQLPS执行Ad-SqlAvailabilityDatabase异常

SQL Server 2017 SQLPS执行Ad-SqlAvailabilityDatabase遇到问题 这个错误简直逆天,查了下该cmdlet的帮助 常规参数里有Debug。 执行Debug,输出如下: PS C:Windowssystem32> Add-SqlAvailab...

UltraSQL
2018/05/23
0
0
mssql数据迁移到mysql

为了把项目从 mssql+.net 转化为 mysql+jsp, 需要把数据从mssql迁移到mysql,因为数据不太复杂,不想用转换工具,就手动尝试迁移,方法记录,以便以后参考: 1. mssql 数据导出为sql 方法是在...

Mr_zebra
2018/11/02
15
0
小觑数据库(SqlServer)查询语句执行过程

近年来,越来越多的NoSql产品不断的以技术革命的者的身份跳出来:"你看哥是多么的快,你们关型型数据库真是战五渣阿"。是的,高性能的场景下NoSql真的很出彩。而我们关系型数据库只能在墙角哭...

Yunanw
2014/04/14
552
4
关于SqlServer的整形字段和空的查询

现象如下: 字段intType是整形的。 select * from Test where varcharType='test' and intType='' 可以查出 intType为0的记录。 update Test set dcr_times=''这时 Test的值为0。 关于 Orac......

晨曦之光
2012/06/07
159
0
SQL注入漏洞全接触--入门篇

  随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有...

望志东
2012/04/24
244
0

没有更多内容

加载失败,请刷新页面

加载更多

CQRS与AXON

CQRS 看了蛮多文章,只会CRUD,却不懂CQRS,CQRS是遵循DDD思想而产生的一种模式,Command and Query Responsibility Segregation 命令与查询隔离。查询就直接通过正常的模式service调dao层。...

无极之岚
26分钟前
2
0
OSChina 周三乱弹 —— 欢迎你来做产品经理

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :10多次劲歌金曲获奖,更多叱咤歌坛排名,黎明才应该是四大天王之首,只可惜拍的电影太少。单曲循环一个多月的歌,力荐 《无名份的...

小小编辑
41分钟前
74
5
500行代码,教你用python写个微信飞机大战

这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!...

上海小胖
今天
8
0
关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
7
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部