Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / firebird case where / 6 сообщений из 6, страница 1 из 1
16.11.2020, 11:31
    #40018715
tarakan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird case where
Здравствуйте, помогите построить запрос.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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?
...
Рейтинг: 0 / 0
16.11.2020, 12:04
    #40018730
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird case where
tarakan,

Целиком весь CASE копируй. Или оборачивай вложенным и снаружи уже условие накладай.

INOUT и DOCID это с каких таблиц?
...
Рейтинг: 0 / 0
16.11.2020, 12:05
    #40018735
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird case where
tarakan,

-продублировать CASE в секции WHERE
-select... from select
-попытаться перенести EG_Z_SOURCE_TICKET в ...JOIN и избавиться от CASE
...
Рейтинг: 0 / 0
16.11.2020, 12:07
    #40018739
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird case where
m7m
-попытаться перенести EG_Z_SOURCE_TICKET в ...JOIN и избавиться от CASE
Лучше не пытаться, а просто перенести. ISNULL + LEFT JOIN там легко кладутся.
...
Рейтинг: 0 / 0
16.11.2020, 12:10
    #40018741
tarakan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird case where
WildSery
tarakan,
INOUT и DOCID это с каких таблиц?

Простите, тут уже по разному извращался и убрал принадлежность к таблицам
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
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 DESIG
FROM
  EG_XML X
LEFT OUTER JOIN EG_Z_SOURCE_DOCUMENT S ON (S.ID = X.SOURCEID)
WHERE
  UPPER(DESIG) = UPPER(:DESIG) AND
  UPPER(S.INOUT) = UPPER('IN') AND
  S.DOCID = 4
...
Рейтинг: 0 / 0
16.11.2020, 12:38
    #40018759
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
firebird case where
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / firebird case where / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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