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