关于分组统计的问题

wangna5421 2006-10-26 04:14:02
怎样实现这样的查询统计呀

ID NAME LEIBIE
1 A 学生
2 B 学生
3 C 老师
4 D 学生
返回的结果为
ID NAME LEIBIE
1 A 学生
2 B 学生
4 D 学生
3
3 C 老师
1
...全文
172 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangna5421 2006-10-26
  • 打赏
  • 举报
回复
我要是还有个字段该怎么处理呀
子陌红尘 2006-10-26
  • 打赏
  • 举报
回复
declare @t table(ID int,NAME varchar(10),LEIBIE varchar(10))
insert into @t select 1,'A','学生'
insert into @t select 2,'B','学生'
insert into @t select 3,'C','老师'
insert into @t select 4,'D','学生'

select
ID,NAME,(case when NAME is null then rtrim(count(*)) else LEIBIE end) as LEIBIE
from
@t
group by
LEIBIE,ID,NAME with rollup
having
grouping(NAME)=0 or (grouping(ID)=1 and grouping(LEIBIE)=0)

/*
ID NAME LEIBIE
----------- ---------- ------------
3 C 老师
NULL NULL 1
1 A 学生
2 B 学生
4 D 学生
NULL NULL 3
*/
dawugui 2006-10-26
  • 打赏
  • 举报
回复
例如,简单表 Inventory 中包含:

Item Color Quantity
-------------------- -------------------- --------------------------
Table Blue 124
Table Red 223
Chair Blue 101
Chair Red 210

下列查询将生成小计报表:

SELECT CASE WHEN (GROUPING(Item) = 1) THEN 'ALL'
ELSE ISNULL(Item, 'UNKNOWN')
END AS Item,
CASE WHEN (GROUPING(Color) = 1) THEN 'ALL'
ELSE ISNULL(Color, 'UNKNOWN')
END AS Color,
SUM(Quantity) AS QtySum
FROM Inventory
GROUP BY Item, Color WITH ROLLUP

Item Color QtySum
-------------------- -------------------- --------------------------
Chair Blue 101.00
Chair Red 210.00
Chair ALL 311.00
Table Blue 124.00
Table Red 223.00
Table ALL 347.00
ALL ALL 658.00

(7 row(s) affected)

dawugui 2006-10-26
  • 打赏
  • 举报
回复
用 ROLLUP 汇总数据

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧