Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сравнение дат в InterBase [IB5.x]


Андрей Пл ©   (2008-01-15 11:54:00) 

Здравствуйте я недавно только начал работать с InterBase
Меня интересует вопрос как выполнит следующий запрос без ошибки

SELECT  BRIEFCASE.*,
       ibec_IIF(openorder < CAST('01.01.2008' AS date),100, pz100)   as pz
FROM BRIEFCASE


где openorder типа дата
     pz100 числогого типа
и являються полями таблицы BRIEFCASE

мне кажеться что основная ошибка в месте там где я сравниваю даты (openorder < CAST('01.01.2008' AS date)

Заранее спасибо


Евгений Р.   (2008-01-17 14:45:00) [1]

select tbl.a,pz100
from tbl where ddd < :P1
union all
select tbl.a + 10, pz100 * "другое поле"
from tbl where ddd >= :P2


Andrey   (2008-01-15 16:27:00) [2]

Ну если аж по целому ряду причин... ( http://sql.ru/forum/actualthread.aspx?tid=514715)
Можно еще написать хранимую процедуру... можно удф... они в IB5 были )
Но для решения такой проблемы это всё проктология. Union all верное решение, но я ж забыл, у афтара ведь целый ряд причин...


Desdechado   (2008-01-15 16:02:00) [3]

> мне по ряду причин не подходит такой вариант.
Слова. Причин пока не углядел.


Sergey13   (2008-01-15 15:02:00) [4]

> [4] Андрей Пл   (15.01.08 14:45)

ИМХО, для такого случая лучше ХП написать.


Андрей Пл   (2008-01-15 14:45:00) [5]


> Desdechado ©   (15.01.08 13:51) [3]

мне по ряду причин не подходит такой вариант.
может  кто то подскажет как мне обеспечить получение того или иного значения в селекте в зависимости от выполнения условия условия,
а именно мне надо выводить в колонку или просто значение поля pz100 если openorder < 1.01.2008 или произведение pz100 * "другое поле"  если  openorder >= 1.01.2008


Desdechado   (2008-01-15 13:51:00) [6]

select tbl.a from tbl where ddd < :P1
union all
select tbl.a + 10 from tbl where ddd >= :P2


Андрей Пл   (2008-01-15 13:01:00) [7]

пример приведи если не сложно!


Desdechado   (2008-01-15 12:31:00) [8]

Вместо такой фигни, лучше сделай:
1. используй параметры, а не строковое представление дат
2. вместо iif используй конструкцию UNION ALL


Наверх

Титульная страница Поиск, карта сайта Написать письмо