Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вычисляемые столбцы в условии where ASE 12/15 / 4 сообщений из 4, страница 1 из 1
05.03.2009, 18:07
    #35854174
JenyaD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемые столбцы в условии where ASE 12/15
Есть запрос.
Проверяет на вхождение даты dat_end в диапазон дат.

Код: plaintext
1.
2.
3.
select pod,dat_end,dat_begin
from xxx
where dat_end>='05.11.2008' and dat_end < '05.10.2009'

Нужно переделать так, что бы если dat_end была равна null, то в диапазон должна попадать дата большая на год, чем dat_begin. То есть если конечная дата не задана, то мы ее принимаем большей
на год начальной.

Пробовал такой запрос :

Код: plaintext
1.
2.
3.
4.
5.
select pod,
         (case when dat_end is NULL then dateadd(yy,  1  ,dat_begin) else dat_end end) as end_date, 
         dat_begin
from xxx 
where end_date >='05.11.2008' and end_date < '05.10.2009'
Но к сожелению ASE в отличие от ASA не воспринимает такой запрос.

Invalid column name 'end_date'.


Какие варианты, кроме создания временной таблицы можно попробовать ?
...
Рейтинг: 0 / 0
05.03.2009, 21:42
    #35854535
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемые столбцы в условии where ASE 12/15
JenyaDНо к сожелению ASE в отличие от ASA не воспринимает такой запрос.
Повтори формулу в where и все.
Код: plaintext
1.
2.
3.
4.
5.
select pod,
         (case when dat_end is NULL then dateadd(yy,  1  ,dat_begin) else dat_end end) as end_date, 
         dat_begin
from xxx 
where (case when dat_end is NULL then dateadd(yy,  1  ,dat_begin) else dat_end end) between '05.11.2008' and  '05.10.2009'
...
Рейтинг: 0 / 0
06.03.2009, 10:24
    #35855133
JenyaD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемые столбцы в условии where ASE 12/15
Мне тут еще важно >= < between означает > <.
Спасибо за наводку в итоге запрос такой :

Код: plaintext
1.
2.
3.
4.
5.
select pod,
         dat_end, 
         dat_begin
from xxx 
where (isnull(dat_end,dateadd(yy,  1  ,dat_begin))) >= '05.11.2008' and (isnull(dat_end,dateadd(yy,  1  ,dat_begin))) < '05.10.2009'
...
Рейтинг: 0 / 0
06.03.2009, 10:51
    #35855217
JenyaD
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемые столбцы в условии where ASE 12/15
Поправлюсь between означает >= <=.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вычисляемые столбцы в условии where ASE 12/15 / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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