又是``分组``` 聚合, 临时表中的聚合,想了好几天了,没解~?(50分)
学期 UserID 名称 课1 课2 课3 课4 课5
1 a1 陈俊延 NULL NULL 外语1 NULL NULL
1 a2 黄智威 化学1 生物1 外语1 政治1 物理1
1 a3 邓 维 NULL NULL 外语1 NULL 物理1
1 a4 梁楚倩 化学1 NULL 外语1 NULL NULL
1 a5 谢荣鑫 化学1 生物1 外语1 政治1 物理1
1 a6 陈振威 NULL 生物1 外语1 政治1 物理1
1 a7 郑俊龙 NULL NULL 外语1 NULL 物理1
1 a8 黄玲梓 化学1 生物1 外语1 政治1 物理1
1 a9 刘于思 化学1 生物1 外语1 政治1 物理1
1 a10 郭 贶 NULL NULL 外语1 NULL 物理1
1 a11 刘 庄 化学1 生物1 外语1 政治1 物理1
1 a12 王 聪 NULL NULL 外语1 NULL 物理1
2 a1 陈俊延 化学1 生物1 外语2 政治1 物理1
2 a2 黄智威 NULL NULL 外语2 NULL NULL
2 a3 邓 维 化学1 生物1 外语2 政治1 NULL
2 a4 梁楚倩 NULL 生物1 外语2 政治1 物理1
2 a5 谢荣鑫 NULL NULL 外语2 NULL NULL
2 a6 陈振威 化学1 NULL 外语2 NULL NULL
2 a7 郑俊龙 化学1 生物1 外语2 政治1 NULL
2 a8 黄玲梓 NULL NULL 外语2 NULL NULL
2 a9 刘于思 NULL NULL 外语2 NULL NULL
2 a10 郭 贶 化学1 NULL 外语2 政治1 NULL
2 a11 刘 庄 NULL NULL 外语2 NULL NULL
2 a12 王 聪 化学1 生物1 外语2 政治1 NULL
3 a1 陈俊延 化学2 NULL 外语3 NULL NULL
3 a2 黄智威 化学2 生物2 外语3 政治2 物理2
3 a3 邓 维 NULL NULL 外语3 NULL NULL
3 a4 梁楚倩 NULL NULL 外语3 NULL 物理2
3 a5 谢荣鑫 化学2 生物2 外语3 政治2 物理2
3 a6 陈振威 NULL 生物2 外语3 NULL 物理2
3 a7 郑俊龙 化学2 NULL 外语3 政治2 NULL
3 a8 黄玲梓 化学2 生物2 外语3 政治2 物理2
3 a9 刘于思 NULL 生物2 外语3 NULL NULL
3 a10 郭 贶 NULL NULL 外语3 NULL 物理2
3 a11 刘 庄 化学2 NULL 外语3 政治2 物理2
3 a12 王 聪 化学2 生物2 外语3 NULL 物理2
4 a1 陈俊延 NULL 生物2 外语4 政治2 物理2
4 a2 黄智威 NULL NULL 外语4 NULL NULL
4 a3 邓 维 化学2 生物2 外语4 政治2 物理2
4 a4 梁楚倩 化学2 生物2 外语4 政治2 NULL
4 a5 谢荣鑫 NULL NULL 外语4 NULL NULL
4 a6 陈振威 化学2 NULL 外语4 政治2 NULL
4 a7 郑俊龙 NULL 生物2 外语4 NULL 物理2
4 a8 黄玲梓 NULL NULL 外语4 NULL NULL
4 a9 刘于思 NULL NULL 外语4 政治2 物理2
4 a10 郭 贶 化学2 生物2 外语4 政治2 NULL
4 a11 刘 庄 NULL 生物2 外语4 NULL NULL
4 a12 王 聪 NULL NULL 外语4 政治2 NULL
-------------------------------------------------------------------------
以上数据是从临时表中聚合出来的,现在又要聚合一次, 要按学期和课1到课8 分组 ,把一学期的中的课程选择方法求出来,
--------
要得出: 第一学期, 有多少种选择方法, 从大到少例出来, 例出显示其中某选择的人是哪些,?
思路:
我采用 zjcxc(: 邹建 :) 方法,
-- 添加一例,用于统计分组后的一条值中`` 共有几条
--alter table #tt add [Sum] [int]
--go
--update #tt set [Sum] = 1 -- 修改默认值为1,
-----写一个如下类似的方法 [zjcxc(: 邹建 :) 方法]
-----把UserID 字的第一条和下一条聚合起来 [UserID1,UserID2,UserID3,...]
-----但我的又是分组的,这些分组是以学期和课1到课5分组,这一下难住我了,能出个主意吗?
declare @u varchar(100),
@y1 varchar(800), -- 对应 UserID
update #tt set @y1=case [学期] when @u then
case when UserID is null then @y1
else case when @y1 is null then UserID else @y1+','+UserID end
end
else UserID end
Urs=@y1,
@u=[学期]
------------ ,
select SUM([Sum]) as [Sum],[学期],[课1],[课2],[课3],[课4],[课5],UserID=max(Urs)
from #tt
group by [学期],[课1],[课2],[课3],[课4],[课5] order by [学期],[UserID]
--drop table #tt
----结果我求出来的值,有一个问题, UserID 不聚合, 是空值,
----zjcxc(: 邹建 :) 兄在不, 给我解解, 主要问题是``分组