2016-08-24 1 views
0

Ma requête:Comment interroger et afficher des données en tant que matrice?

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 

Mes résultats attendus sont:

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

Bienvenue sur StackOverflow. Veuillez être descriptif dans votre question et fournir les résultats attendus. Cela aidera grandement à obtenir une réponse. Bien que cela semble être une longue lecture, ça vaut le coup. http://stackoverflow.com/help/how-to-ask – scsimon

+0

Vous venez de supprimer vos définitions de variables – scsimon

+0

Puisque vous utilisez le pivot, il est primordial que vous fournissiez un exemple de jeu de données pour aller avec votre sortie attendue – scsimon

Répondre

-1

Dynamic Pivot

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