ВЫБРАТЬ с помощью CASE WHEN и значения после THEN вместо String - PullRequest
0 голосов
/ 07 июня 2018

Мой запрос:

SELECT
    id,
    CASE WHEN EXISTS(
    SELECT
        data_od
    FROM
        bp_stan_produkt
    WHERE
        id_produkt = bp_produkt.id AND data_do IS NULL AND id_stan_produkt = 313
) THEN 'TAK' ELSE 'NIE'
END AS "313"
FROM
    bp_produkt
WHERE
    id IN(21048528)

Можно ли поставить data_od в столбец 313 вместо TAK или мне нужно создать функцию, сделать SELECT data_od into some_variable и then some_variable

1 Ответ

0 голосов
/ 07 июня 2018

Да, это возможно:

select id, 
  case when exists (select data_od from bp_stan_produkt 
                  where id_produkt = bp_produkt.id and data_do is null 
                   and id_stan_produkt = 313) 
   then  (select to_char(data_od, 'YYYY-MM-DD')
                   from bp_stan_produkt 
                   where id_produkt = bp.id 
                     and data_do is null
                     and id_stan_produkt = 313)
  else 'NIE'
  end as "313"
from bp_produkt 
where id in(21048528);

РЕДАКТИРОВАТЬ:

SELECT bp.id, COALESCE(t.data_od_t, 'NIE') AS "313"
FROM bp_produkt bp
LEFT JOIN LATERAL (select to_char(data_od, 'YYYY-MM-DD') AS data_od_t 
                   from bp_stan_produkt 
                   where id_produkt = bp.id 
                     and data_do is null
                     and id_stan_produkt = 313) t 
 ON TRUE
WHERE bp.id in(21048528)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...