2014-09-01 1 views
1

Я хотел бы объединить разные операторы Count в одном запросе, чтобы в итоге запрос просто возвращал одно число (общее количество) для каждого счета.SQL Server: как объединить разные подсчеты в одном запросе

Следующие запросы работают отдельно, но я не смог найти способ их комбинирования, не повторяя один и тот же результат (вложенные таблицы) и не теряя отдельных имен для каждого из них («Союз все»).

Может ли кто-нибудь сказать мне, как я могу это достичь?

My SQL (только в сочетании для облегчения зрения здесь):

(
    SELECT  COUNT(*) OVER() AS countB 
    FROM  MOC_Log2 B 
    WHERE  B.modBy = @modBy 
    AND   B.lastUpdate = 'Added' 
    FOR XML PATH(''), ELEMENTS, TYPE 
), 
(
    SELECT  COALESCE(SUM(D.vote), '0') AS countC 
    FROM  MOC_Log3 C 
    LEFT JOIN MOC_Log3_Votes D 
    ON   D.itemID = C.itemID 
    WHERE  C.modBy = @modBy 
    AND   C.lastUpdate = 'Added' 
    FOR XML PATH(''), ELEMENTS, TYPE 
), 
(
    SELECT  COALESCE(SUM(F.vote), '0') AS countE 
    FROM  MOC_Log4 E 
    LEFT JOIN MOC_Log4_Votes F 
    ON   F.itemID = E.itemID 
    WHERE  E.modBy = @modBy 
    AND   E.lastUpdate = 'Added' 
    FOR XML PATH(''), ELEMENTS, TYPE 
) 

Большое спасибо за любую помощь в этом, Тим.

ответ

1

просто добавить столбцы нуль?

SELECT  COUNT(*) OVER() AS countB, 
      Null AS countC, 
      Null AS countE 
FROM  MOC_Log2 B 
WHERE  B.modBy = @modBy 
AND   B.lastUpdate = 'Added' 
FOR XML PATH(''), ELEMENTS, TYPE 
Union 
SELECT  null, 
      COALESCE(SUM(D.vote), '0'), 
      null 
FROM  MOC_Log3 C 
LEFT JOIN MOC_Log3_Votes D 
ON   D.itemID = C.itemID 
WHERE  C.modBy = @modBy 
AND   C.lastUpdate = 'Added' 
FOR XML PATH(''), ELEMENTS, TYPE 
Union 
SELECT  null, 
      null, 
      COALESCE(SUM(F.vote), '0') 
FROM  MOC_Log4 E 
LEFT JOIN MOC_Log4_Votes F 
ON   F.itemID = E.itemID 
WHERE  E.modBy = @modBy 
AND   E.lastUpdate = 'Added' 
FOR XML PATH(''), ELEMENTS, TYPE 

Также примечание Я использовал Union over Union все. Трудно сказать, будет ли это работать для вас, поскольку я не могу определить, могут ли лишние столбцы нуль вызвать некоторую ошибку.

+0

Это отлично работает - большое спасибо за интересное обходное решение! :) – user2571510

 Смежные вопросы

  • Нет связанных вопросов^_^