sql - 面试
一,关于 group by
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负
需要生成结果为:
Fday | 胜 | 负 |
2005/5/9 | 2 | 2 |
2005/5/10 | 1 | 2 |
建表:
1 create table t_com(Fday varchar(10),Fwin_lose nchar(1)) 2 insert into t_com values(‘2005-05-09‘,‘胜‘) 3 insert into t_com values(‘2005-05-09‘,‘胜‘) 4 insert into t_com values(‘2005-05-09‘,‘负‘) 5 insert into t_com values(‘2005-05-09‘,‘负‘) 6 insert into t_com values(‘2005-05-10‘,‘胜‘) 7 insert into t_com values(‘2005-05-10‘,‘负‘) 8 insert into t_com values(‘2005-05-10‘,‘负‘)
答案:
1 --解释:sum中的then后的数字表示‘代表几‘,如‘1‘表示‘出现一个记录,基数加1‘. 2 3 select Fday [日期], 4 SUM(case when Fwin_lose=‘胜‘ then 1 else 0 end) [胜], 5 SUM(case when Fwin_lose=‘负‘ then 1 else 0 end) [负] 6 from t_com group by Fday
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。