Sql server SQL server子查询中多个计数的总和

Sql server SQL server子查询中多个计数的总和,sql-server,count,sum,subquery,Sql Server,Count,Sum,Subquery,我试图在SQl Server中将多个计数的单个总和作为一行来获取。下面是一个我的查询不起作用的例子 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

我试图在SQl Server中将多个计数的单个总和作为一行来获取。下面是一个我的查询不起作用的例子

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
)

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

您只需要在子查询中添加一个别名。应该是这样的

选择 sumalas_query_name.A、sumalas_query_name.B、sumalas_query_name.C 从…起 选择 COUNTCASE T.ID当1然后T.ID结束时,0作为[A] COUNTCASE T.ID当2然后T.ID结束时,0作为[B] COUNTCASE T.ID当3然后T.ID结束时,0作为[C] 从…起 MyTable AS T 在T.IDNum=MOT.IDNum上作为MOT的内部联接MyOtherTable 哪里 YEART.MyDate=2015年
作为别名\u query\u name-您只需要向子查询添加别名。应该是这样的

选择 sumalas_query_name.A、sumalas_query_name.B、sumalas_query_name.C 从…起 选择 COUNTCASE T.ID当1然后T.ID结束时,0作为[A] COUNTCASE T.ID当2然后T.ID结束时,0作为[B] COUNTCASE T.ID当3然后T.ID结束时,0作为[C] 从…起 MyTable AS T 在T.IDNum=MOT.IDNum上作为MOT的内部联接MyOtherTable 哪里 YEART.MyDate=2015年
作为别名\u查询\u名称-请为您的两个表提供架构和数据,以便我们进行调查请为您的两个表提供架构和数据,以便我们进行调查