--2.如果是横表的统计,就要用动态SQL语句.
declare @s varchar(8000)
set @s=''
select @s=@s+',['+ItemStatus+']=sum(case ItemStatus when '''
+ItemStatus+''' then 1 else 0 end)'
from(select distinct ItemStatus from 表) a
set @s=substring(@s,2,8000)
exec('select '+@s+' from 表')
go
--为方便调用,可以做成存储过程
create proc p_qry
as
set nocount on
declare @s varchar(8000)
set @s=''
select @s=@s+',['+ItemStatus+']=sum(case ItemStatus when '''
+ItemStatus+''' then 1 else 0 end)'
from(select distinct ItemStatus from 表) a
set @s=substring(@s,2,8000)
exec('select '+@s+' from 表')
set nocount off
go
对于某个物品
select ItemName, ItemStatus, count(*) as 次数 from 表 where RecordTime Between @begintime and @endtime and Itemname = @ItemName group by ItemName, ItemStatus