首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

- - !问一条SQL语句(具体见内容)解决方法

2012-04-06 
- - !问一条SQL语句(具体见内容)可能有很多人问过这个问题,但我还是没找到合适的答案,这样就请大家帮帮忙

- - !问一条SQL语句(具体见内容)
可能有很多人问过这个问题,但我还是没找到合适的答案,这样就请大家帮帮忙想想办法了

为求统一,大家用的表名和字段名,请用中文,并与我一致,谢谢!

DataBase Table Name : 扣分表

扣分日期 姓名 所扣分数
-------------------------------------------------
2008-01-02 张三 2
2008-01-10 张三 1
2008-01-02 李四 2
2008-02-10 张三 1




要求反回结果:

姓名 1月 2月 ....12月
--------------------------------------------------
张三 3 2
李四 2



最好是一条SQL语句,
其次考虑存储过程。

[解决办法]
select sum(case when extract(month from 扣分日期) = '01' then 所扣分数 else 0 end) , 
sum(case when extract(month from 扣分日期) = '02' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '03' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '04' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '05' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '06' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '07' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '08' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '09' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '10' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '11' then 所扣分数 else 0 end) ,
sum(case when extract(month from 扣分日期) = '12' then 所扣分数 else 0 end) from 扣分表 group by 姓名
[解决办法]
CASE WHEN TO_CHAR(扣分日期,'MM') = '01' THEN 所扣分数 ELSE 0 END

也可以
[解决办法]
用decode也行
decode(TO_CHAR(扣分日期,'MM'), '01',1,0 )

别名想要数字开头需要加"",比如"01"
[解决办法]
没有好一点的方法吗。如果楼主要的是每一天的分数,那就。。。。

热点排行