请教sql统计语句【换个排序方式】
表(personinformation)
字段 acceptDate(datetime) --录入时间
admiID(nvarchar(20)) --录入人员
IDcardNumber(nvarchar(20))--身份证号,在这里用于统计录入个数
--每天,每人录入汇总 GO SELECT CONVERT(varchar(100),acceptDate,23) 录入时间,admiID AS 录入人员,COUNT(IDcardNumber) AS 录入总数 FROM dbo.personinformation GROUP BY admiID,CONVERT(varchar(100),acceptDate,23) order by CONVERT(varchar(100),acceptDate,23) ASC
declare @sql varchar(8000)set @sql = 'select convert(varchar(10),acceptDate,120) 'select @sql = @sql + ' , sum(case admiID when ''' + admiID + ''' then 1 else 0 end) [' + admiID + ']'from (select distinct admiID from tb) as aset @sql = @sql + ' from tb group by convert(varchar(10),acceptDate,120)'exec(@sql)
[解决办法]
create table personinformation(acceptDate datetime,admiID nvarchar(20),IDcardNumber nvarchar(20))insert into personinformation select '2008-01-27','cq',' 10'insert into personinformation select '2008-02-06','cq',' 70'insert into personinformation select '2011-09-19','yml',' 15'insert into personinformation select '2011-09-19','admin',' 124'insert into personinformation select '2011-09-20','yml',' 26'insert into personinformation select '2011-09-20','admin',' 4'insert into personinformation select '2011-09-20','cq',' 8'insert into personinformation select '2011-09-21','yml',' 159'go--select [acceptDate],[admin],[cq],[yml]from personinformation pivot (sum(1) for [admiID] in([admin],[cq],[yml]))b group by godeclare @s nvarchar(4000)select @s=isnull(@s+',','')+'['+ admiID +']' from(select distinct [admiID] from personinformation)texec('select [acceptDate],'+@s+'from (select acceptdate,admiID,count(*)ct from personinformation group by acceptdate,admiID)t pivot (count([admiID]) for [admiID] in('+@s+'))b')/*acceptDate admin cq yml----------------------- ----------- ----------- -----------2008-01-27 00:00:00.000 0 1 02008-02-06 00:00:00.000 0 1 02011-09-19 00:00:00.000 1 0 12011-09-20 00:00:00.000 1 1 12011-09-21 00:00:00.000 0 0 1(5 行受影响)*/godrop table personinformation