2016-08-24 3 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 
관련 문제