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

Откуда:
Сообщений: 12
Есть акцессовский запрос, использующий iif, который хотелось бы перенести в функцию SQL Server

SELECT Поле1, Поле2, Поле3, COUNT [Поле4] AS [sum], iif ([Поле5]=0, [sum]) AS [0],  iif ([Поле5]=1, [sum]) AS [1]
GROUP BY Поле1, Поле2, Поле3,Поле5


Подскажите пожалуйста как переписать такой запрос с использованием CASE
16 авг 15, 23:49    [18026468]     Ответить | Цитировать Сообщить модератору
 Re: Заменить iif на CASE в запросе  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
scorpy,

SELECT ..., CASE WHEN [Поле5]=0 THEN [sum] END as [0], CASE WHEN [Поле5]=1 THEN [sum] END as [1]
FROM ...


Ждём ошибку некорректного синтаксиса, ибо так GROUP BY не пройдёт. Отвечал только касаемо IIF.

А вообще 2014 версия спокойно IIF прожуёт и не подавится. Правда, должен принимать 3 аргумента, а не 2. Тут не хватает значения для false.
17 авг 15, 00:35    [18026579]     Ответить | Цитировать Сообщить модератору
 Re: Заменить iif на CASE в запросе  [new]
scorpy
Member

Откуда:
Сообщений: 12
Сид, спасибо!! Собственно из-за Group by и лезли ошибки, а я думал что проблема с CASE. Group by вообще можно выкинуть, так даже лучше, тогда весь этот "развернутый" запрос можно будет затолкать в представление, и через него уже подсчитывать что угодно.
17 авг 15, 01:44    [18026684]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить