同事的需求,他區紐分析的欄位在每次查詢個過程中都會異動。上網Google了依些資訊之後,發現只能透過組字串的方式達到此功能。以下簡單的使用Northwind資料庫測試結果
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'
執行上述語法的結果如下圖所示:
http://www.dotblogs.com.tw/dc690216/archive/2010/02/04/13478.aspx
全站熱搜


留言列表
