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

start [/forum/topic.php?fid=40&fpage=490&tid=1579395]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 333ms |

| 0 / 0 |
