2016-10-25 4 views
0

Я довольно новичок в SQL, и я не могу представить способ получения результатов, которые я ищу. Я пытаюсь получить СУММУ всех ковшей A/R из стареющего ведра и объекта. Внутри ведер есть несколько разных категорий (страхование, удержание & Pt. Ответственность) Я хочу включить все категории в СУММ, кроме «Lien». Я продолжаю получать общую ошибку GROUP BY. Может ли кто-нибудь помочь? Благодаря!Исключение состояния из функции SUM SQL Server 2014

SELECT ar.[Report Date] 
,ar.Facility 
,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN SUM (ar.[0-30]) END) AS [0-30] 
,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN SUM (ar.[31-60]) END) AS [31-60] 
,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN SUM (ar.[61-90]) END) AS [61-90] 
,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN SUM (ar.[91-120] + ar.[120+]) END) AS [91+] 
FROM DBO.ARByPayer AS ar 
GROUP BY ar.Facility, ar.[Report Date] 
+1

И что говорит об ошибке? – ajeh

+0

Msg 8120, уровень 16, состояние 1, строка 3 Столбец «DBO.ARByPayer.Current Financial Class» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – Tosh

ответ

0

Вы должны просто исключить эти строки из своего запроса с предложением where.

SELECT ar.[Report Date] 
    , ar.Facility 
    , SUM (ar.[0-30]) AS [0-30] 
    , SUM (ar.[31-60]) AS [31-60] 
    , SUM (ar.[61-90]) AS [61-90] 
    , SUM (ar.[91-120] + ar.[120+]) AS [91+] 
FROM DBO.ARByPayer AS ar 
WHERE ar.[Current Financial Class] <> 'Lien' 
GROUP BY ar.Facility 
    , ar.[Report Date] 
+0

Спасибо, Шон! Я должен был это знать. Я полностью забыл о предложении WHERE. – Tosh

+0

Рад, что сработало для вас. –

0

Вы можете достичь этого с помощью дополнительного запроса.

Select [Report Date], Facility, sum([0-30]) AS [0-30], sum([31-60]) AS [31-60], sum([61-90]) AS [61-90], sum([91+]) AS [91+] 
     (SELECT ar.[Report Date] 
     ,ar.Facility 
     ,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN ar.[0-30] END) AS [0-30] 
     ,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN ar.[31-60] END) AS [31-60] 
     ,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN ar.[61-90] END) AS [61-90] 
     ,(CASE WHEN ar.[Current Financial Class] <> 'Lien' THEN ar.[91-120] + ar.[120+]) END) AS [91+] 
     FROM DBO.ARByPayer AS ar) t 
     GROUP BY Facility, [Report Date]