日期:2014-05-17  浏览次数:20683 次

求SQL2000 行转列代码
数据表格式:
ID  凭据编号      登记日期       联系人  联系电话   所属部门  备注
1   2013050201  2013-05-02    张三     110       销售部
2   2013050202  2013-05-02    李斯      110      销售部
3   2013050301  2013-05-03    王五      119      开发部
4   2013050401  2013-05-04    赵六              行政部

要把数据生成如下格式
销售部五月的数据(查询销售部)查询出属于销售部的登记数量,跟进月(day)进行统计
日期   1 2 3 4 5 6 7 8 9 10 11 .... 31 合计
数据   0 2 0 0 0 0 0 0 0 0 0 0 .... 0  2

查询需求:查询依据指定部门,指定月份,查询出指定月每天的登记量,如果没有显示0,最后还有个合计是当月的登记量,请问这个sql该怎么写。数据库是SQL2000.

请教各位大侠,可以达到这个效果吗?
sql 数据库 数据 需求

------解决方案--------------------
if OBJECT_ID('tempdb..#temp', 'u') is not null   drop table #temp;
go
create table #temp( [ID] int, [凭据编号] varchar(100), [登记日期] DATETIME, [联系人] varchar(100), [联系电话] varchar(100), [所属部门] varchar(100));
insert #temp
select '1','2013050201','2013-05-02','张三','110','销售部' union all
select '2','2013050202','2013-05-02','李斯','110','销售部' union all
select '3','2013050301','2013-05-03','王五','119','开发部' union all
select '4','2013050401','2013-05-04','赵六',null,'行政部' 

--SQL:
DECLARE @department NVARCHAR(100), @month CHAR(6), @sql NVARCHAR(MAX), @collist NVARCHAR(MAX)
SELECT @department = N'销售部', @month = '201305'

SET @collist = ''
SELECT @collist = @collist + QUOTENAME(number+1)+' = SUM(CASE DAY(AllMonthDay) WHEN '+ LTRIM(number+1) +' THEN CNT END),'