A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王洪磊 中级黑马   /  2013-6-8 11:16  /  1658 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王洪磊 于 2013-6-9 09:18 编辑

有一张表T-Score
Date Name Score
2008-8-8  拜仁 胜      
2008-8-9  奇才 胜      
2008-8-9  湖人 胜      
2008-8-10  拜仁 负
2008-8-8  拜仁 负      
2008-8-12  奇才 胜
要求输出下面格式:
Name 胜 负
拜仁  1  2
湖人  1  0
奇才  2  0      
注意:在字符串前加N,比如N'胜'
本人自己写的,但是感觉代码好长,是不是有更好更短的写法呢?求指导
select distinct Name,
(case Name
when N'拜仁' then (select count(*) from TableScore where Score='胜' and Name='拜仁')
when N'湖人' then (select count(*) from TableScore where Score='胜' and Name='湖人')
when N'奇才' then (select count(*) from TableScore where Score='胜' and Name='奇才')
end
) as 胜,
(case Name
when N'拜仁' then (select count(*) from TableScore where Score='负' and Name='拜仁')
when N'湖人' then (select count(*) from TableScore where Score='负' and Name='湖人')
when N'奇才' then (select count(*) from TableScore where Score='负' and Name='奇才')
end
) as 负
from TableScore

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
select Name,
Sum{
case Score
when  N'胜'  then  1
else  0
end
} as 胜,
Sum{
case  Score
when  N'负'  then  1
else  0
end
} as 负
from T_Scores
group by Name
回复 使用道具 举报
哦,原来如此,这就等于胜了加一分,这样的道理。明白了
回复 使用道具 举报
许庭洲 发表于 2013-6-8 11:22
select Name,
Sum{
case Score

谢谢!这样就清晰多了!
只要把大括号改成小括号就可以啦!:lol
回复 使用道具 举报
本帖最后由 李晶晶 于 2013-6-8 14:49 编辑

select Name,COUNT((case score
when N'胜' then 1  end)) as 胜,
COUNT((case score
when N'负' then 1 end)) as 负
from T-Score
group by Name;

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马