T sql使用内连接选择pivot

时间:2015-05-08 14:24:26

标签: sql-server tsql

我的查询如下

    SELECT  cpn.ProjectName ,
            COUNT(c.case_ID) AS 'Total' ,
            DATENAME(month, DATEADD(month, MONTH(ca.xdate), 0) - 1) AS Month
    FROM    cases c
            JOIN case_action ca ON c.case_ID = ca.case_ID
            INNER JOIN tblCaseProjectsNew cpn ON cpn.ID = c.Project_ID
            INNER JOIN reseller_user_profiles rup 
                ON rup.reseller_user_ID = c.reseller_user_ID
    WHERE   cpn.ID = 1
            AND ca.status_ID = 0
    GROUP BY 
         cpn.ProjectName ,
         DATENAME(month, DATEADD(month, MONTH(ca.xdate), 0) - 1) 

查询结果如下

项目(列) - 总计(列) - 月(列)

Project1            2             April

Project1            6            February

Project1            3             March

问题:

如何选择查询

四月(专栏) - 二月(专栏) - 三月(专栏)

2                 6                 3

任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:2)

select 
    cpn.ProjectName, 
    count(case when month(ca.xdate) = 2 then c.case_ID end) as [February column],
    count(case when month(ca.xdate) = 4 then c.case_ID end) as [April column]
from cases c
    inner join case_action ca on c.case_ID=ca.case_ID 
    inner join tblCaseProjectsNew cpn on cpn.ID=c.Project_ID
    inner join reseller_user_profiles rup on 
       rup.reseller_user_ID=c.reseller_user_ID
where cpn.ID=1 and ca.status_ID=0
group by  cpn.ProjectName