Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.08;
Скачать: CL | DM;

Вниз

SQL запрос   Найти похожие ветки 

 
Ruslan.   (2003-04-16 19:44) [0]

Привет мастера!
Очень нуждаюсь в вашей помощи.
Ниже приведен запрос, в 3-ей строчке считается стаж работника,
Date_in-дата поступления на работу
Date_Out-дата увольнения.
Вопрос: как можно сделать так чтобы если поле «дата увольнения» = NULL то Date_in отнималась от текущее даты (TODAY) т.е. если Date_Out<>null выполняется DATE_OUT-DATE_IN, иначе ‘TODAY’-DATE_IN. Возможно ли такое вообще провернуть?
Спасибо.

1)select REGNOM,FAMILIYA,link,
2)count(FAMILIYA) as KOL_DOLGNOST,
3)CAST(SUM(((DATE_OUT-DATE_IN)/365))-0.5 as integer) as stag,
4)CAST((("TODAY"-ANKETA3)/365)-0.5 as integer)
5)from reestradv JOIN anketa on
6)ANKETA.LINK=REESTRADV.CODE
7)GROUP BY ANKETA.LINK,reestradv.code,reestradv.regnom,
8)reestradv.FAMILIYA,anketa3


 
Oops ©   (2003-04-16 20:36) [1]

Может есть такая возможность как в других языках (java, etc.):
(DATE_OUT==NUL) ? TODAY : DATE_OUT

тоесть подставить
XXXXX = (DATE_OUT==NUL) ? TODAY : DATE_OUT-DATE_IN)

CAST(SUM(((XXXXX-DATE_IN)/365))-0.5 as integer) as stag


 
Oops ©   (2003-04-16 20:38) [2]

сори, поправочка
XXXXX = (DATE_OUT==NULL) ? TODAY : DATE_OUT


 
MsGuns ©   (2003-04-16 21:26) [3]

Делается путем соединения двух запросов (UNION), в первом из которых доп.проверка
WHERE ... AND (DATE_OUT is not null)...,
а во втором
WHERE ... AND (DATE_OUT is null)...,


 
Ruslan.   (2003-04-17 17:25) [4]

Спасибо все работает!
У меня еще два вопроса:
Можно ли сгруппировать результаты этих двух запросов(UNION)?
И еще один вопрос: есть ли в InterBase аналог функции CASE WHEN…
или DECODE…

select REGNOM,LINK,FAMILIYA,
CAST(SUM(((DATE_OUT-DATE_IN)/365))-0.5 as integer) as stag,
CAST((("TODAY"-ANKETA3)/365)-0.5 as integer)
from reestradv JOIN anketa on
ANKETA.LINK=REESTRADV.CODE
WHERE DATE_OUT IS NOT NULL
GROUP BY ANKETA.LINK,reestradv.code,reestradv.regnom,
reestradv.FAMILIYA,anketa3
UNION
select REGNOM,LINK,FAMILIYA,
CAST(SUM((("TODAY"-DATE_IN)/365))-0.5 as integer) as stag,
CAST((("TODAY"-ANKETA3)/365)-0.5 as integer)
from reestradv JOIN anketa on
ANKETA.LINK=REESTRADV.CODE
WHERE DATE_OUT IS NULL
GROUP BY ANKETA.LINK,reestradv.code,reestradv.regnom,
reestradv.FAMILIYA,anketa3


 
Verg ©   (2003-04-17 17:50) [5]


> есть ли в InterBase аналог функции CASE WHEN…


Firebird 1.5

http://www.ibphoenix.com/main.nfs?a=ibphoenix&s=1050586675:76245&page=ibp_download#150



Страницы: 1 вся ветка

Текущий архив: 2003.05.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
3-22954
Angel[Saint]
2003-04-17 08:15
2003.05.08
Как написать своего провайдера


1-23226
Dabadabiabo
2003-04-25 14:17
2003.05.08
Открыть файл стандартным приложением


14-23358
Дмитрий К.К.
2003-04-21 07:05
2003.05.08
Именинники 21 апреля


1-23080
maza
2003-04-25 23:52
2003.05.08
tab sheeeeeet


4-23431
Виталик
2003-03-07 15:05
2003.05.08
Handle ?