SQL 来自子查询的多个计数的服务器总和

SQL server sum of multiple counts from subquery

我试图在 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
)

这会引发无效语法,因为我需要为子查询设置别名。关于如何让它发挥作用的任何想法?

您只需要为子查询添加一个别名。它应该看起来像这样。

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