1
一行
SQL Server 2005中SQL Server 2005的压缩结果集返回到值
我试图压缩设置让每个工作人员一行数据的结果,我的查询是
SELECT Staff +'- '+ CONVERT(CHAR(2),Service_Date, 110) AS Staff
,(SELECT COUNT (Procedure_) WHERE Procedure_ Like '90791%') AS '90791'
,(SELECT COUNT (Procedure_) WHERE Procedure_ Like'90832%') AS '90832'
,(SELECT COUNT (Procedure_) WHERE Procedure_ Like'90834%') AS '90834'
,(SELECT COUNT (Procedure_) WHERE Procedure_ Like'90837%') AS '90837'
,(SELECT COUNT (Procedure_) WHERE Procedure_ Like '90847%') AS '90847'
FROM dbo.Service_History
WHERE Program='OPCC'
AND STATUS='Kept'
AND TYPE = 'Client'
AND Procedure_ IS NOT NULL
AND Service_date BETWEEN DATEADD(mm, DATEDIFF(mm, 0,GETDATE())-3, 0) AND GETDATE()
GROUP BY Staff +'- '+ CONVERT(CHAR(2),Service_Date, 110),Procedure_
ORDER BY Staff +'- '+ CONVERT(CHAR(2),Service_Date, 110),Procedure_
GROUP BY Staff +'- '+ CONVERT(CHAR(2),Service_Date, 110),Procedure_
ORDER BY Staff +'- '+ CONVERT(CHAR(2),Service_Date, 110),Procedure_
结果集如下所示:(每个员工一列,返回一列数据,一列全空行)。
Staff 90791 90832 90834 90837 90847
Smith, Joe (568)- 04 15 NULL NULL NULL NULL
Smith, Joe (568)- 04 NULL NULL 2 NULL NULL
Smith, Joe (568)- 04 NULL NULL NULL 1 NULL
Smith, Joe (568)- 04 NULL NULL NULL NULL NULL
我想将上面的结果下降到一行。基本上每个工作人员每月有一行总计执行的程序#。
喜欢的部份:
Staff 90791 90832 90834 90837 90847
Smith, Joe (568)- 04 15 NULL 2 1 NULL
我想要的结果可以通过导入结果到一个临时表,然后查询临时表得到的结果来实现,但是这是远远效率,我希望有是更好的解决方案。