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

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

2013-06-25 
关于投票结果,求一个统计的sql语句投票结果如下:人员编号(rybh)姓名(ryxm) tpjg(投票结果)0001A赞成0001A

关于投票结果,求一个统计的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

热点排行