同事的需求,他區紐分析的欄位在每次查詢個過程中都會異動。上網Google了依些資訊之後,發現只能透過組字串的方式達到此功能。以下簡單的使用Northwind資料庫測試結果

image

CREATE PROC usp_PIVO @Country NVARCHAR(15)
AS
declare @pvtheaders nvarchar(max) ,@sql nvarchar(max) --@sumsql     動態組出樞紐資料行相加

SELECT   @pvtheaders=ISNULL(@pvtheaders,'')+'['+CustomerID+'],' 
FROM Customers  WHERE Country ='UK'
GROUP BY CustomerID
	--SELECT left(@pvtheaders, len(@pvtheaders)-1)
--移除 @pvtheaders 字串 最後一位字元 "," 
set @pvtheaders= left(@pvtheaders, len(@pvtheaders) - 1)

--動態PIVOT
set @sql=' SELECT * FROM (
select CustomerID,FirstName,Freight 
from Orders o JOIN Employees e on o.EmployeeID=e.EmployeeID )p
pivot
(SUM(Freight)
for CustomerID in ('+ @pvtheaders +')) AS  pvt'

--執行 
exec sp_executesql @sql


執行下列語法輸入國別參數查詢

EXEC usp_PIVO 'UK'
EXEC usp_PIVO 'Mexico'

 

執行上述語法的結果如下圖所示:

image

參考:黑暗執行緒RiCo技術農場msdn

http://www.dotblogs.com.tw/dc690216/archive/2010/02/04/13478.aspx

全站熱搜
創作者介紹
創作者 小草 的頭像
小草

學海無邊,書囊無底

小草 發表在 痞客邦 留言(0) 人氣()