Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.008 c
1-23104
Renul
2003-04-26 14:55
2003.05.08
Маскировка BMP файлов.


1-23215
Zirus
2003-04-25 09:44
2003.05.08
из array


1-23208
Slym
2003-04-25 07:36
2003.05.08
Нужна TreeView с чекбоксами


7-23407
[BAD]Angel
2003-03-16 21:08
2003.05.08
Как выключить комп?


3-23038
SerGa
2003-04-18 01:19
2003.05.08
DBIERR_LOCKFILELIMIT - Что это?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский