Я почти уверен, что это не имеет ничего общего с выражениями CASE, но некоторые другие столбцы могут быть нулевыми. И something||NULL
возвращает NULL
, поэтому все выражение возвращает ноль.
Вы можете легко проверить это, запустив select m.ticker, <your expression here> from ...
. Тогда вы увидите, что возвращенные строки одинаковы.
Вместо этого вы можете использовать concat_ws()
, который обрабатывает NULL
как пустую строку. Кроме того, это упрощает чтение:
SELECT concat_ws(' ', m.ticker,
CASE
WHEN x.ticker IS NULL THEN 'N'
ELSE 'Y'
END,
CASE
WHEN s.ticker IS NULL THEN 'N'
ELSE 'Y'
END,
l.current_recommendation,
to_char(l.recommendation_date,'MM/DD/YYYY'),
z.current_recommendation,
to_char(z.date_recommended,'MM/DD/YYYY')
)
FROM ...
Если вы можете принять true
или false
вместо Y
и N
, вы можете упростить выражения CASE до : (x.ticker IS NULL)::text