日期:2014-05-18  浏览次数:20561 次

这个结果如何用分组SQL实现啊?
ID           RY             Que               State
1           小王         asdf             已解决
2           小张         q23w             已解决
4           小王         asdf             未解决
5           小沈         3sw               已解决
6           小王         2333             未解决
7           小张         vdsea           未解决
.....

我想要以下分组结果:
RY         Sum_01       Sum_02         Sum_03
小王         3                   2                   1
小张         2                   1                   1
小沈         1                   1                   0

Sum_01   代表问题总数
Sum_02   代表(已解决)问题数
Sum_03   代表(未解决)问题数

这个分组SQL能实现吗?




------解决方案--------------------
select RY,
count(*) as 'Sum_01 ',
sum(case when State = '已解决 ' then 1 else 0 end) as 'Sum_02 ',
sum(case when State = '未解决 ' then 1 else 0 end) as 'Sum_03 ',
from 表
group by RY
------解决方案--------------------
select ry,
sum(1) as [sum_01],
sum(case when state = '已解决 ' then 1 else 0 end) as [sum_02],
sum(case when state = '未解决 ' then 1 else 0 end) as [sum_03]
from 表
group by ry

------解决方案--------------------
declare @t table(
ID int,
RY varchar(10),
Que varchar(10),
State varchar(10))

insert @t select 1, '小王 ', 'asdf ', '已解决 '
union all select 2, '小张 ', 'q23w ', '已解决 '
union all select 4, '小王 ', 'asdf ', '未解决 '
union all select 5, '小沈 ', '3sw ', '已解决 '
union all select 6, '小王 ', '2333 ', '未解决 '
union all select 7, '小张 ', 'vdsea ', '未解决 '

select * from @t

select RY, count(RY) as Sum_01,
sum(case State when '已解决 ' then 1 else 0 end) as Sum_02,
sum(case State when '未解决 ' then 1 else 0 end) as Sum_03
from @t a
group by RY

/*
RY Sum_01 Sum_02 Sum_03
---------- ----------- ----------- -----------
小沈 1 1 0
小王 3 1 2
小张 2 1 1

(所影响的行数为 3 行)
*/


------------

樓主自己的結果貌似不太對,呵呵
------解决方案--------------------
直接用 create view 建立就行了