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

求一条按时间分类的语句
其中一张表如下
ID           流程       日期
1               A             9-1
2               A             9-1
3               B             9-1
4               C             9-1
1               B             9-2
2               B             9-2
3               C             9-2
4               D             9-2
想得到的结果是
                9-1         9-2
A               2             0
B               1             2
C               1             1
D               0             1
小弟先谢过




------解决方案--------------------
--日期固定的写法
select ID ,
sum(case 日期 when '9-1 ' then 1 else 0 end) [9-1],
sum(case 日期 when '9-2 ' then 1 else 0 end) [9-2]
from 表
group by ID
--日期不固定的写法
declare @sql varchar(8000)
set @sql = 'select ID '
select @sql = @sql + ' , sum(case 日期 when ' ' ' + 日期 + ' ' ' then 1 else 0 end) [ ' + 日期 + '] '
from (select distinct 日期 from 表) as a
set @sql = @sql + ' from 表 group by ID '
exec(@sql)