当 group by 后面只有一个列的时候,自然好判断,但是有多个列的时候,是怎么算的呢?
SELECT
Category,Year(SalesDate) as [year],Count(*) as Count FROM RawData
GROUP BY Category, Year(SalesDate)
WITH ROLLUP
Category year Count
X 2006 5
X NULL 5
Y 2005 4
Y 2006 11
Y NULL 15
Z 2006 4
Z NULL 4
NULL NULL 24
SELECT
Category,Year(SalesDate) as [year],Count(*) as Count FROM RawData
GROUP BY Category, Year(SalesDate)
WITH ROLLUP
Category year Count
X 2006 5
X NULL 5
Y 2005 4
Y 2006 11
Y NULL 15
Z 2006 4
Z NULL 4
NULL NULL 24
解决方案 »
- 更新记录的存储过程,为什么更新时间总是更新不了?
- Sql Server 新建数据库后,发现数据库中自动创建了一个表,为什么?
- *** 高分请教:关于SQLServer的同步和复制的问题 ***
- 这样的Sql怎么写?
- SQL Server2000在XP sp2下安装错误!(还有100分)
- Set p1=Comm.CreateParameter("userid",3,2,4) ,userid前面是否应有@,为什么?
- 何处可下载SQL-SERVER2000桌面版?
- 关于触发器更新数据库的问题
- 只有LDF文件,没有了MDF文件,还能恢复数据库么?
- 急!!!请各位老大看看怎样实现远程数据库操作
- powerdesigner12 逆向工程 sqlserver2005
- DBA需求,有意向的朋友请大家尽快哦!
先显示一个汇总,再显示下一个Category变化或Year(SalesDate)变化的记录
select Category,Year(SalesDate) as [year],Region,SUM(Amount) as [sum] FROM RawData
GROUP BY Category, Year(SalesDate),Region
WITH ROLLUPCategory year Region sum
X 2006 MidWest 24
X 2006 South 165
X 2006 West 36
X 2006 NULL 225
X NULL NULL 225
Y 2005 NorthEast 28
Y 2005 South 51
Y 2005 NULL 79
Y 2006 MidWest 38
Y 2006 NorthEast 153
Y 2006 South 236
Y 2006 NULL 427
Y NULL NULL 506
Z 2006 MidWest 83
Z 2006 NorthEast 55
Z 2006 South 33
Z 2006 West 44
Z 2006 NULL 215
Z NULL NULL 215
NULL NULL NULL 946有3个列分组就更加看不懂了。
X 2006 5
X NULL 5
Y 2005 4
Y 2006 11
Y NULL 15
Z 2006 4
Z NULL 4
NULL NULL 24
一楼的,第三到第四之间为什么没有汇总呢,年份变了啊。
所以这三列任意一个列的发生变化时,都会插入一行汇总,
同时两个列同时变化时,会插入两行汇总
三个列同时变化,会插入三行汇总
最后是一个所有的汇总数
with rollup运算结果受 group by 后列的影响, 第一列 肯定是最后一个是NULL(聚合),当第一列值有变化时做聚合,当第二列值有变化时做聚合当第N列值有变化时,第N+1列做聚合。