SQL服务器从子查询中多次计数的总和

问题描述 投票:1回答:1

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

这会抛出无效的语法,因为我需要为子查询添加别名。有关如何使其工作的任何想法?

sql-server count sum subquery
1个回答
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 
© www.soinside.com 2019 - 2024. All rights reserved.