2015-10-26 2 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 
Смежные вопросы