投票结果如下:
人员编号(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