Форум: "Базы";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c