powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проверка условия в select-запросе
7 сообщений из 7, страница 1 из 1
Проверка условия в select-запросе
    #32368074
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите плис, как в select-запросе проверить условие?
Если в поле дата, то выбрать её, а если null, то текущую дату? На MS SQL делается прмерно так:
select
MyField1,
case when fldDate is null then GetDate() else fldDate end,
MyField2
from someTable
А как это в IB реализовать?
Заранее всем спасибо! И с Новым Годом! Удачи!
...
Рейтинг: 0 / 0
Проверка условия в select-запросе
    #32368163
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решилось с помощью rfunc следующим образом:
select dtif(strlen(cast(DtField as char(20))), DtField, cast('today' as date)) from MyTable
Если кто подскажет более другой вариант - буду весьма признателен.
...
Рейтинг: 0 / 0
Проверка условия в select-запросе
    #32368395
Void!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Проверка условия в select-запросе
    #32371940
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пасибо! Мне чуть-чуть не то надо. Я сам виноват, неправильно задачу сформулировал. В таблице есть два поля: InDate - дата прихода и OutDate - дата ухода, или NULL, если товар ещё на складе. Нужно подсчитать среднее время нахождения товара на складе на текущую дату:
select avr(dtif(strlen(cast(OutDate as char(20))), OutDate, cast('today' as date)) - InDate) from MyTable
Или у тут можно исхитрится без сторонних компонент?
...
Рейтинг: 0 / 0
Проверка условия в select-запросе
    #32373491
hyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Среднее время хп наверно удобней всего считать.
...
Рейтинг: 0 / 0
Проверка условия в select-запросе
    #32373802
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>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
Проверка условия в select-запросе
    #32373805
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проверка условия в select-запросе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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