2015-10-26 36 views
1

我想在SQl服務器中以單個行的形式獲取多個計數的個別總和。下面是我的查詢不起作用的一個例子來自子查詢的多個計數的SQL服務器總和

SELECT 
    SUM(A), SUM(B), SUM(C) 
FROM 
(
    SELECT 
     COUNT(CASE T.ID WHEN 1 THEN T.ID END, '', 0) AS [A] 
     COUNT(CASE T.ID WHEN 2 THEN T.ID END, '', 0) AS [B] 
     COUNT(CASE T.ID WHEN 3 THEN T.ID END, '', 0) AS [C] 
    FROM 
     MyTable AS T 
     INNER JOIN MyOtherTable AS MOT ON T.IDNum = MOT.IDNum 
    WHERE 
     YEAR(T.MyDate) = 2015 
) 

這將拋出無效的語法,因爲我需要別名子查詢。任何想法如何讓這個工作?

+0

請提供您的兩個表的模式和數據,以便我們可以研究它 – Diginari

回答

0

你只需要添加一個別名到子查詢。它應該看起來像這樣。

SELECT 
    SUM(alias_query_name.A), SUM(alias_query_name.B), SUM(alias_query_name.C) 
FROM 
(SELECT 
    COUNT(CASE T.ID WHEN 1 THEN T.ID END, '', 0) AS [A] 
    COUNT(CASE T.ID WHEN 2 THEN T.ID END, '', 0) AS [B] 
    COUNT(CASE T.ID WHEN 3 THEN T.ID END, '', 0) AS [C] 
FROM 
    MyTable AS T 
    INNER JOIN MyOtherTable AS MOT ON T.IDNum = MOT.IDNum 
WHERE 
    YEAR(T.MyDate) = 2015 
) as alias_query_name -- <----- name of sub query