Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2020, 11:33   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию firebird case where

Здравствуйте, помогите построить запрос.
Код:
SELECT
  X.*
 ,CASE
    WHEN UPPER(S.DESIG) = UPPER('Ticket') THEN (SELECT T.DESIG FROM EG_Z_SOURCE_TICKET T WHERE T.ID = X.TICKETID)
    ELSE S.DESIG
  END DOCNAIM
FROM
  EG_XML X
LEFT OUTER JOIN EG_Z_SOURCE_DOCUMENT S ON (S.ID = X.SOURCEID)
WHERE
  UPPER(DOCNAIM) = UPPER(:DOCNAIM) AND
  UPPER(INOUT) = UPPER('IN') AND
  DOCID = 4
Ругается на поле DOCNAIM. Как подать параметром, полученным в CASE?
tarakan1983 вне форума Ответить с цитированием
Старый 16.11.2020, 13:39   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Как подать параметром, полученным в CASE?
никак.

1. честно повторить case в условии.

2. ВСЕ(кроме проблемного Where) сделать ПОДзапросом
и в "новом" запросе это окажется "простым" условием на ПОЛЕ вычисленное ранее (в подзапросе).
Код:
select ...
from ( select ... case ... end as docnaim .... ) as sss
where sss.docnaim ...
p.s. ах, да придется этому полю придумать другой alias (другое наименование)
Цитата:
UPPER(DOCNAIM) = UPPER(:DOCNAIM)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 16.11.2020 в 13:43.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Case в Where m9yt Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 1 09.08.2016 16:18
Перемещение из case 1 в case 2(switch(), язык Си) Павел_95 Помощь студентам 13 11.01.2013 14:18
Use case elenSV Помощь студентам 0 09.06.2010 22:28
Case of Lemo Помощь студентам 4 06.06.2010 01:12