Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка с общей группировкой данных с различными условиями расчета для столбов  [new]
qpash
Member

Откуда:
Сообщений: 14
Добрый день, подскажите как правильно осуществить выборку с различными условиями для столбов. В операторе CASE в [Артикул] обязательно нужно вставить агрегатную функцию, но ни какая не подходит. Может как то вложенными запросами для каждого столбца?

[src]SELECT 
,ROUND(SUM([Наработка_план]),1) 
,ROUND(SUM([Наработка_2]),1) 
,ROUND(SUM([ТО_план]),1) 
,CASE WHEN (([Артикул])='K0000057') OR (([Артикул])='K0000058') OR (([Артикул])='K0000059') THEN ROUND(SUM([Время_2]),1) ELSE 0 END AS [ТО_факт]
,CASE WHEN (([Артикул])='K0000060') OR (([Артикул])='K0000061') THEN ROUND(SUM([Время_2]),1) ELSE 0 END AS [Доп_столб]
FROM [MON].[dbo].[Prost_2014] WHERE  [Объект]= 'Объект1' 
 AND ([Дата] BETWEEN '2014-05-01'  AND  '2014-05-31') 
 GROUP BY  [Техника кр]
ORDER BY [Вид техники],  [Техника кр]
[/SRC]
4 июл 14, 13:43    [16259898]     Ответить | Цитировать Сообщить модератору
 Re: Выборка с общей группировкой данных с различными условиями расчета для столбов  [new]
Glory
Member

Откуда:
Сообщений: 104760
qpash
В операторе CASE в [Артикул] обязательно нужно вставить агрегатную функцию, но ни какая не подходит.

В CASE нельзя вставить агрегатную функцию.
Но в агрегатную функцию можно вставить CASE
4 июл 14, 13:45    [16259905]     Ответить | Цитировать Сообщить модератору
 Re: Выборка с общей группировкой данных с различными условиями расчета для столбов  [new]
qpash
Member

Откуда:
Сообщений: 14
Спасибо! Вынес агрегатную функцию перед CASE и все верно получилось!
4 июл 14, 13:50    [16259938]     Ответить | Цитировать Сообщить модератору
 Re: Выборка с общей группировкой данных с различными условиями расчета для столбов  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Glory
В CASE нельзя вставить агрегатную функцию.
Но в агрегатную функцию можно вставить CASE
Я конечно придираюсь, но в CASE можно вставить агрегатную функцию.
Тут дело в другом, тут колонка [Артикул] находится вне агрегатной функции, хотя её нет в блоке GROUP BY.
Если её засунуть внутрь (обвернув весь CASE), то станет синтаксически верно.
С [Вид техники] тоже что-то не так.
7 июл 14, 08:28    [16267769]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить