现在有三个查询语句分别实现对每个学生参加课外活动情况的记录的查询
select studentid,count(*) querycount from Qry_AllQueryLog where querytypeid=1 and classid=9000 group by studentidselect studentid,count(*) querycount from Qry_AllQueryLog where querytypeid=2 and classid=9000 group by studentidselect studentid,count(*) querycount from Qry_AllQueryLog where querytypeid=3 and classid=9000 group by studentid
Qry_AllQueryLog 是一个记录学生参加课外活动情况的明细表,querytypeid是每个活动的编号,要统计每个学生参加课外活动的方法是将该学生(studentid),的该querytypeid的记录进行累加count
想要达到的效果是将
学生 课外活动 参加次数
小明 打篮球 2
小明 踢足球 5
小明 游泳 3
转换为
学生 打篮球 踢足球 游泳
小明 2 5 3
的形式
这是典型的行边列的操作,请教哪位高手能够解决啊!!!!
select studentid,count(*) querycount from Qry_AllQueryLog where querytypeid=1 and classid=9000 group by studentidselect studentid,count(*) querycount from Qry_AllQueryLog where querytypeid=2 and classid=9000 group by studentidselect studentid,count(*) querycount from Qry_AllQueryLog where querytypeid=3 and classid=9000 group by studentid
Qry_AllQueryLog 是一个记录学生参加课外活动情况的明细表,querytypeid是每个活动的编号,要统计每个学生参加课外活动的方法是将该学生(studentid),的该querytypeid的记录进行累加count
想要达到的效果是将
学生 课外活动 参加次数
小明 打篮球 2
小明 踢足球 5
小明 游泳 3
转换为
学生 打篮球 踢足球 游泳
小明 2 5 3
的形式
这是典型的行边列的操作,请教哪位高手能够解决啊!!!!
select student,
max(case '课外活动' when '打篮球' then 参加次数 else 0 END) 打篮球,
max(case '课外活动' when '踢足球' then 参加次数 else 0 END) 踢足球 ,
max(case '课外活动' when '游泳' then 参加次数 else 0 END) 游泳
from 表
group by student
from Qry_AllQueryLog where querytypeid in (1,2,3)
and classid=9000
group by studentid, querytypeid
select studentid,
sum(case querytypeid when 1 then querycount else 0 end) querytypeid_1,
sum(case querytypeid when 2 then querycount else 0 end) querytypeid_2,
sum(case querytypeid when 3 then querycount else 0 end) querytypeid_3,
where querytypeid in (1,2,3)
and classid=9000
group by studentid
SUM(DECODE(QUERYTYPEID, 1, 1, 0)) BASKETBALL,
SUM(DECODE(QUERYTYPEID, 2, 1, 0)) FOOTBALL,
SUM(DECODE(QUERYTYPEID, 3, 1, 0)) SWIMMING
FROM QRY_ALLQUERYLOG
WHERE CLASSID = 9000
GROUP BY STUDENTID;
SUM(DECODE(QUERYTYPEID, 1, 1, 0)) BASKETBALL,
SUM(DECODE(QUERYTYPEID, 2, 1, 0)) FOOTBALL,
SUM(DECODE(QUERYTYPEID, 3, 1, 0)) SWIMMING
FROM QRY_ALLQUERYLOG
WHERE CLASSID = 9000
GROUP BY STUDENTID;
select STUDENTID,
SUM(DECODE(QUERYTYPEID='打篮球', 1, 1, 0)),
SUM(DECODE(QUERYTYPEID='踢足球', 1, 1, 0))
SUM(DECODE(QUERYTYPEID=' 游泳', 1, 1, 0))
from QRY_ALLQUERYLOG
group by STUDENTID
動態的在論動中已經有很多寫了,查一下就可以知道