powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / case во frome! Не умею!
6 сообщений из 6, страница 1 из 1
case во frome! Не умею!
    #33035021
Dallena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Подскажите, пожалуйста, не работает
конструкция select ... from ... where case поле when 1 then поле2 = поле3
when 0 then полу4 = поле5
end
Sybase ASE.
Я пока не умею писать на sybase конструкции where case ....
Если кому не жалко, скиньте примерчик подобной кострукции для неумехи
:(
Заранее спасибо!
...
Рейтинг: 0 / 0
case во frome! Не умею!
    #33035053
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пропустит, то только что-то подобное:

where
case поле
when 1 then поле1
when 0 then поле2
end = поле3
...
Рейтинг: 0 / 0
case во frome! Не умею!
    #33035164
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
select ... 
from ... 
where case when fld= 1  and поле2 = поле3 then  1 
                when fld= 0  and поле4 = поле5 then  1 
         else  0 
         end =  1 

Но сразу предупреждаю, что при отсутствии других условий выборки этот запрос будет сканировать всю таблицу. рекомендовал бы переписать эту лабуду на N запросов с UNION ALL.
...
Рейтинг: 0 / 0
case во frome! Не умею!
    #33035481
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
where ((fld=1 and РПМЕ2 = РПМЕ3) or (fld=0 and РПМЕ4 = РПМЕ5))
а вообще, если fld других значений не принимает, то тогда
...
and
(РПМЕ2 = РПМЕ3 or РПМЕ4 = РПМЕ5)
and
...



Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
case во frome! Не умею!
    #33036852
Dallena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там к сожалению надо чтобы в there было не константа а поле1 = поле2
т.е мне как бы в кейсе надо джойн переключать по условию.
т.е типа where case when const = 1 then поле1 = поле2
when const = 2 then поле3 = поле2
end.
Так не дает.
...
Рейтинг: 0 / 0
case во frome! Не умею!
    #33036896
Litus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть еще такая конструкция:

where
a = isNull(nullif(f1,1),f2)
т.е.
если f1 = 1, то a = f2, а если f1 <> 1, то a = f1

а можно и
"coalesce" посмотреть команду


Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / case во frome! Не умею!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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