读书人

关于投票结果统计的sql语句

发布时间: 2013-06-25 23:45:41 作者: rapoo

关于投票结果,求一个统计的sql语句
投票结果如下:
人员编号(rybh)姓名(ryxm) tpjg(投票结果)
0001 A 赞成
0001 A 反对
0001 A 弃权
0002 b 赞成
0002 b 赞成
0002 b 反对
0003 c 反对
0003 c 赞成
0003 c 弃权
。。。。。。。
需要的结果
0001 A 赞成 1 反对 1 弃权1
0002 b 赞成2 反对1 弃权0
0003 c 赞成1 反对1 弃权1

[解决办法]


select rybh,ryxm,
'赞成',count(case when tpjg='赞成' then 1 else null end),
'反对',count(case when tpjg='反对' then 1 else null end),
'弃权',count(case when tpjg='弃权' then 1 else null end)
from 表
group by rybh,ryxm

[解决办法]
select rybh,ryxm,
'赞成'+cast(sum(case when tpjg='赞成' then 1 else 0 end) as varchar(10)) as '赞成票数',
'反对'+cast(sum(case when tpjg='反对' then 1 else 0 end) as varchar(10)) as '反对票数',
'弃权'+cast(sum(case when tpjg='弃权' then 1 else 0 end) as varchar(10)) as '弃权票数'
from tb group by rybh,ryxm

[解决办法]

--换个转换的写法
select rybh,ryxm,
'赞成'+convert(nvarchar(10),sum(case when tpjg='赞成' then 1 else 0 end)) as '赞成票数',
'反对'+convert(nvarchar(10),sum(case when tpjg='反对' then 1 else 0 end)) as '反对票数',
'弃权'+convert(nvarchar(10),sum(case when tpjg='弃权' then 1 else 0 end)) as '弃权票数'
from tb
group by rybh,ryxm

[解决办法]

select rybh,ryxm,'赞成',
(select count(1) from revote where tpjg='赞成' and rybh=a.rybh ) ,
'反对',(select count(1) from revote where tpjg='反对' and rybh=a.rybh ) ,
'弃权',(select count(1) from revote where tpjg='弃权' and rybh=a.rybh )

from revote a group by rybh,ryxm

读书人网 >SQL Server

热点推荐