我有这么一个表
ID TIME DATABAE RECORD USERT LATETIME TYPE
1 20071023:100350 国图书目库 1 root 20070405 修改
2 20071009:120947 国图书目库 8 root 20070612 删除
3 20071009:165136 国图书目库 6 root 20070824 原编我用什么语句把他变成这样的用户 原编 修改 删除
root 1 1 1
就是想统计一下类型的个数
ID TIME DATABAE RECORD USERT LATETIME TYPE
1 20071023:100350 国图书目库 1 root 20070405 修改
2 20071009:120947 国图书目库 8 root 20070612 删除
3 20071009:165136 国图书目库 6 root 20070824 原编我用什么语句把他变成这样的用户 原编 修改 删除
root 1 1 1
就是想统计一下类型的个数
sum(case TYPE when '原编' then 1 else 0 end) 原编,
sum(case TYPE when '修改' then 1 else 0 end) 修改,
sum(case TYPE when '删除' then 1 else 0 end) 删除
from tb
group by usert
insert into tb values(1, '20071023:100350', '国图书目库', 1, 'root', '20070405', '修改')
insert into tb values(2, '20071009:120947', '国图书目库', 8, 'root', '20070612', '删除')
insert into tb values(3, '20071009:165136', '国图书目库', 6, 'root', '20070824', '原编')
go--静态SQL,指type只有这三项
select USERT,
sum(case TYPE when '原编 ' then 1 else 0 end) 原编,
sum(case TYPE when '修改 ' then 1 else 0 end) 修改,
sum(case TYPE when '删除 ' then 1 else 0 end) 删除
from tb
group by usert
/*
USERT 原编 修改 删除
---------- ----------- ----------- -----------
root 1 1 1(所影响的行数为 1 行)
*/
--动态SQL,指TYPE不只这三项
declare @sql varchar(8000)
set @sql = 'select USERT'
select @sql = @sql + ' , sum(case type when ''' + type + ''' then 1 else 0 end) [' + type + ']'
from (select distinct type from tb) as a
set @sql = @sql + ' from tb group by USERT'
exec(@sql)
/*
USERT 删除 修改 原编
---------- ----------- ----------- -----------
root 1 1 1
*/drop table tb