2016-08-24 38 views
0

我的查詢:如何查詢和顯示數據爲矩陣?

SELECT * 
FROM 
    (SELECT 
     t.Description, 
     ISNULL(COUNT(e.EmployeeCode), 0) 
    FROM  
     Employee AS e 
    INNER JOIN 
     Department AS d ON e.DepartmentCode = d.DepartmentCode 
    INNER JOIN 
     TermReason AS t ON e.TermReasonCode = t.TermReasonCode 
    WHERE 
     e.terminationdate IS NOT NULL 
     AND e.TerminationDate BETWEEN @PeriodStartDate AND @PeriodEndDate) s 
PIVOT 
    (COUNT(EmployeeCode) FOR description IN 
     ([Finance], [Human Resources], [Nursing])) pvt 

我的預期結果是:

Termination Reason Department1 Department2 Department3 etc etc 
--------------------------------------------------------------------- 
    aaa  value1  value2  value 3   value4 
    bbb  value1  value2  value 3   value4 
    ccc  value1  value2  value 3   value4 
    ddd  value1  value2  value 3   value4 
+0

歡迎計算器。請描述您的問題並提供預期結果。這將有助於獲得很大的答案。雖然這看起來像是一個冗長的閱讀,但它是值得的。 http://stackoverflow.com/help/how-to-ask – scsimon

+0

您也剛剛刪除了您的變量定義 – scsimon

+0

由於您使用的是數據透視,所以您提供一個樣本數據集以配合您的預期輸出 – scsimon

回答

-1

動態透視

DECLARE @DynamicPivotQuery AS NVARCHAR(MAX) 
    DECLARE @ColumnName AS NVARCHAR(MAX) 
    --Get distinct values of the PIVOT Column 
    SELECT @ColumnName= ISNULL(@ColumnName + ',','') 
    + QUOTENAME(Week) 
    FROM (SELECT DISTINCT Week FROM #StoreSales) AS Weeks 
    --Prepare the PIVOT query using the dynamic 
    SET @DynamicPivotQuery = 
     N'SELECT Store, ' + @ColumnName + ' 
     FROM #StoreSales 
     PIVOT(SUM(xCount) 
       FOR Week IN (' + @ColumnName + ')) AS PVTTable' 
    --Execute the Dynamic Pivot Query 
    EXEC sp_executesql @DynamicPivotQuery