又是``分组``` 聚合, 临时表中的聚合,想了好几天了,没解~?(50分)

xhunanpp 2004-05-14 02:39:46
学期 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(: 邹建 :) 兄在不, 给我解解, 主要问题是``分组
...全文
68 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xhunanpp 2004-05-14
学期 课1 课2 课3 课4 课5 UserID 名称
1 A1 S1 D1 F1,F2 G1 a1 王1
1 A1 S1 NULL NULL G1 a2 王2
1 NULL NULL D1 NULL G1 a3 王3
1 A1 S1 D1 F1,F2 G1 a4 王4
2 NULL NULL D1 NULL G1 a1 王1
2 NULL NULL D1 NULL NULL a2 王2
2 A1,A2 NULL NULL NULL NULL a3 王3
2 NULL NULL D1 NULL G1 a4 王4
2 A1,A2 NULL NULL NULL NULL a5 王5
----------------------------------------------------------------------------------
------------------上表是原表(是临时表)
------------------要的就是下表的结果,

个数 学期 课1 课2 课3 课4 课5 UserID 名称
1 1 A1 S1 NULL NULL G1 a2 王2
1 1 NULL NULL D1 NULL G1 a3 王3
2 1 A1 S1 D1 F1,F4 G1 a1,a4 王1,王4
1 2 NULL NULL D1 NULL NULL a2 王2
2 2 NULL NULL D1 NULL G1 a1,a4 王1,王4
2 2 A1,A2 NULL NULL NULL NULL a3,a5 王3,王5
----------------------------------------------------------------------------------

高手解``??
  • 打赏
  • 举报
回复
99831323 2004-05-14
干脆列出你要的结果
  • 打赏
  • 举报
回复
xhunanpp 2004-05-14
没人回答啊, 急啊```
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2004-05-14 02:39
社区公告
暂无公告