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

Откуда:
Сообщений: 33
есть такой кусок кода
select a.USERID,a.[Тип записи],a.DACTIV, b.tabel_num, c.FIO,c.Department,c.PositionStaffName,c.MoveDate,
CASE WHEN test.dbo.MPUsers.DACTIV > test.dbo.SAP.MoveDate THEN 1 /*'check_it*/  ELSE 0 /*' '*/ AS "Comment"
from dbo.MPUsers a, dbo.MobilPay b, dbo.SAP c 
where a.USERID = b.userid and b.tabel_num = c.TabNum and a.Статус = 'Активен' and c.Dismissal = '3'

тут идет выборка данных из 3 таблиц, в результате которой собирается список пользователей.
Никак не могу понять как сделать так, чтобы при срабатывании условия test.dbo.MPUsers.DACTIV > test.dbo.SAP.MoveDate создавался столбец "Comment", в который записывалось в идеале слово (например check_it)
P.S оба сраниваемых поля типа date.
28 ноя 13, 15:04    [15206402]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
Glory
Member

Откуда:
Сообщений: 104760
k_mak
Никак не могу понять как сделать так, чтобы при срабатывании условия test.dbo.MPUsers.DACTIV > test.dbo.SAP.MoveDate создавался столбец "Comment"

Ну так вы уже сделали это
28 ноя 13, 15:08    [15206430]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
pio777
Member

Откуда:
Сообщений: 127
k_mak,

CASE WHEN a.DACTIV > b.MoveDate THEN 'check_it' ESLE '' END AS Comment
28 ноя 13, 15:09    [15206442]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
k_mak
Member

Откуда:
Сообщений: 33
Glory , pio777
спасибо, но выдает

Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'from'.
28 ноя 13, 15:12    [15206471]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
Glory
Member

Откуда:
Сообщений: 104760
k_mak
Incorrect syntax near the keyword 'from'.

не from, но AS
Потому что CASE должен заканчиваться END
28 ноя 13, 15:15    [15206506]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
k_mak
Member

Откуда:
Сообщений: 33
Извиняюсь, вроде столбец добавляется, слово содержит.
Теперь другой момент.
Выгружаются только те записи, у которых такое условие.
Можно-ли как-нибудь сделать, чтоб основным условием было все-таки
where a.USERID = b.userid and b.tabel_num = c.TabNum and a.Статус = 'Активен' and c.Dismissal = '3'

и уже в дополнение к нему
CASE WHEN a.DACTIV > b.MoveDate THEN 'check_it' ESLE '' END AS Comment 

?
28 ноя 13, 15:15    [15206510]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
Glory
Member

Откуда:
Сообщений: 104760
k_mak
Можно-ли как-нибудь сделать, чтоб основным условием было все-таки
where a.USERID = b.userid and b.tabel_num = c.TabNum and a.Статус = 'Активен' and c.Dismissal = '3'

Оно и так основное

k_mak
и уже в дополнение к нему

Условия фильтрации и условия вычисления поля - это разные вещи
28 ноя 13, 15:18    [15206524]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
k_mak
Member

Откуда:
Сообщений: 33
Glory
Спасибо! Перепутал базы с записями..Проверил на рабочей - все ок!! Буду дальше курить SQL)
28 ноя 13, 15:20    [15206549]     Ответить | Цитировать Сообщить модератору
 Re: Условие CASE в SELECT  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
k_mak
Glory
Спасибо! Перепутал базы с записями..Проверил на рабочей - все ок!! Буду дальше курить SQL)
Курение начните с выбрасывания запятых из FROM и применения JOINов
28 ноя 13, 15:39    [15206705]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить