Добавление условия case в предложении select дает // либо агрегатную функцию, либо предложение GROUP BY // ошибка - PullRequest
0 голосов
/ 24 октября 2019

Я определил свой запрос на выборку как;

SELECT  Day(Date) as Day, 
        ... 
        Case
            when (SUM(GallonsPumped)*0.01 +130 <ABS(Sum(DailyVar))) Then 'Fail'
            Else 'pass'
        End as result,
        ....
FROM  [dbo].[zzz]
WHERE date >='2019-09-12' and date<='2019-10-09' and SiteCode='0209365' and CompanyId = 67   
order by  CAST(Date AS Date) asc

Но получаю;

Столбец 'tablezzz.Date' недопустим в списке выбора, поскольку он не содержится влибо агрегатная функция, либо предложение GROUP BY.

Это происходит из-за оператора Case. Если я удаляю это, мой запрос на выборку работает нормально. Что я тут не так делаю?

1 Ответ

0 голосов
/ 24 октября 2019

Вам нужно сгруппировать по столбцам, не участвующим в функции агрегирования

, поэтому, если у вас есть столбцы Day, col1, col2, col3, не участвующие в агрегации, вам нужно сгруппировать с помощью GROUP BY Day (Date),col1, col2, col3

  SELECT  Day(Date) as Day, 
        col1, 
        col2,

        Case
            when (SUM(GallonsPumped)*0.01 +130 <ABS(Sum(DailyVar))) Then 'Fail'
            Else 'pass'
        End as result,
        col3
FROM  [dbo].[zzz]
WHERE date >='2019-09-12' and date<='2019-10-09' and SiteCode='0209365' and CompanyId = 67   
GROUP BY Day(Date), col1, col2, col3 
order by  CAST(Date AS Date) asc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...