Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проверка условия в select-запросе / 7 сообщений из 7, страница 1 из 1
04.01.2004, 14:32
    #32368074
BigBob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка условия в select-запросе
Подскажите плис, как в select-запросе проверить условие?
Если в поле дата, то выбрать её, а если null, то текущую дату? На MS SQL делается прмерно так:
select
MyField1,
case when fldDate is null then GetDate() else fldDate end,
MyField2
from someTable
А как это в IB реализовать?
Заранее всем спасибо! И с Новым Годом! Удачи!
...
Рейтинг: 0 / 0
04.01.2004, 22:50
    #32368163
BigBob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка условия в select-запросе
Решилось с помощью rfunc следующим образом:
select dtif(strlen(cast(DtField as char(20))), DtField, cast('today' as date)) from MyTable
Если кто подскажет более другой вариант - буду весьма признателен.
...
Рейтинг: 0 / 0
05.01.2004, 11:51
    #32368395
Void!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка условия в select-запросе
select
MyField1, fldDate, MyField2
from someTable
where not fldDate is null
UNION
select
MyField1, CURRENT_DATE, MyField2
from someTable
where fldDate is null
...
Рейтинг: 0 / 0
09.01.2004, 18:40
    #32371940
BigBob
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка условия в select-запросе
Пасибо! Мне чуть-чуть не то надо. Я сам виноват, неправильно задачу сформулировал. В таблице есть два поля: InDate - дата прихода и OutDate - дата ухода, или NULL, если товар ещё на складе. Нужно подсчитать среднее время нахождения товара на складе на текущую дату:
select avr(dtif(strlen(cast(OutDate as char(20))), OutDate, cast('today' as date)) - InDate) from MyTable
Или у тут можно исхитрится без сторонних компонент?
...
Рейтинг: 0 / 0
12.01.2004, 17:13
    #32373491
hyh
hyh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка условия в select-запросе
Среднее время хп наверно удобней всего считать.
...
Рейтинг: 0 / 0
13.01.2004, 07:10
    #32373802
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка условия в select-запросе
>select avr(dtif(strlen(cast(OutDate as char(20))), OutDate, cast('today' as date)) - InDate) from MyTable

А что же так сложно?
Не указана версия сервера, поэтому предлагаю для FireBird1.5
select avr(coalesce(OutDate, Now) - InDate) from MyTable

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
13.01.2004, 07:17
    #32373805
Denis Uskov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка условия в select-запросе
PS:либо для всех версий через SP

create procedure test
returns (..., period DateTime) as
declare variable NowDate DateTime;
declare variable aOutDate DateTime;
declare variable aInDate DateTime;
begin
NowDate = Now;
for select OutDate, InDate from MyTable into :aOutDate, :aInDate do begin
if (:aOutDate is null) then :aOutDate = NowDate;
:period = :aOutDate - :aInDate;
suspend;
end;
end;

Потом select avr(period) ... from test
И добавить нужные поля для группировки и т.д.

С уважением, Denis Uskov
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проверка условия в select-запросе / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]