Главная страница
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.014 c
6-23271
pok
2003-03-11 13:28
2003.05.08
Отключить интернет...?


4-23423
ers
2003-03-10 13:07
2003.05.08
Как узнать состояние окна?


1-23182
scorpi
2003-04-24 18:31
2003.05.08
Глобальная переменная


3-22932
DenKop
2003-04-18 07:35
2003.05.08
SQL dump данных Interbase 6.5


1-23055
Zheka
2003-04-24 09:34
2003.05.08
Копирование файла