大家给我看看,这句SQL应该怎么写?
组 班级 分数
甲 101 14
乙 140 15
141 18
丙 230 20
231 50
232 60
要实际这两级的分组查询应如何写呀?
问题点数:50、回复次数:11Top
1 楼wgsasd311(自强不息)回复于 2006-03-03 10:43:40 得分 0
楼主说清楚点,你要得到什么要结果?Top
2 楼SaiX(KID盗)回复于 2006-03-03 10:46:49 得分 0
要得到的就是上面的图Top
3 楼SaiX(KID盗)回复于 2006-03-03 10:47:08 得分 0
结果如上
Top
4 楼lsqkeke(可可)回复于 2006-03-03 10:48:42 得分 0
select
组=(case
when 班级 = (select top 1 销售日期 from # where 组=a. 组)
then a. 组
else
''
end),
班级,
分数
from tb aTop
5 楼lsqkeke(可可)回复于 2006-03-03 10:49:09 得分 40
select
组=(case
when 班级 = (select top 1 班级 from tb where 组=a. 组)
then a. 组
else
''
end),
班级,
分数
from tb a
Top
6 楼lsqkeke(可可)回复于 2006-03-03 10:52:21 得分 0
declare @a table(组 varchar(10),班级 int,分数 int)
insert @a
select '甲', 101 , 14 union all
select '乙', 140, 15 union all
select '乙', 141 , 18 union all
select '丙', 230 , 20 union all
select '丙', 231 , 50 union all
select '丙', 232 , 60
select
组=(case
when 班级 = (select top 1 班级 from @a where 组=a. 组)
then a. 组
else
''
end),
班级,
分数
from @a a
运行后就得楼主的结果Top
7 楼SaiX(KID盗)回复于 2006-03-03 10:57:40 得分 0
我这边组,班级,数分是一张表的,总是提示 "在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。"Top
8 楼lsqkeke(可可)回复于 2006-03-03 11:11:49 得分 0
我的示例数据也是一张表啊 你把那个查询语句的@a 换成你个表名就可以了
注意:
from @a a 换成后的结果是: from 表名 a
后面那个a 是你表的别名,不要删除掉Top
9 楼mingyuebin(明月)回复于 2006-03-03 11:16:33 得分 0
select 组=(case when not exists(select 1 from @a where 组=a.组 and 班级<a.班级) then 组 else '' end),班级,分数 from @a aTop
10 楼SaiX(KID盗)回复于 2006-03-03 11:17:30 得分 0
我可能刚才没说清楚,我表中可能班级有两个的话,统计时也要把它的分数加相成一个
如:
declare @a table(组 varchar(10),班级 int,分数 int)
insert @a
select '甲', 101 , 14 union all
select '甲', 101 , 60 union all
select '乙', 140, 15 union all
select '乙', 140, 30 union all
select '乙', 141 , 18 union all
select '丙', 230 , 20 union all
select '丙', 231 , 50 union all
select '丙', 232 , 60
Top
11 楼SUNDATA(古灯)回复于 2006-03-03 12:00:37 得分 10
是这样的,关键在于分组,我测试过没问题。
create table ta(组 varchar(10),班级 int,分数 int)
insert ta
select '甲', 101 , 14 union all
select '乙', 140, 15 union all
select '乙', 141 , 18 union all
select '丙', 230 , 20 union all
select '丙', 231 , 50 union all
select '丙', 232 , 60
select 组=(
case when 班级 = (select top 1 班级 from ta where 组=a. 组)
then a. 组
else
''
end
),班级,分数 from ta a
group by 组,班级,分数Top




