Как получить имена столбцов, содержащие «Y» для каждой строки, и объединить их в список с разделителями-запятыми?
Например, когда базовая таблица выглядит следующим образом:
person | apple | orange | grapes
--------------------------------
1 Y Y
2 Y
3 Y
Результат запроса должен выглядеть следующим образом:
person | fruits
---------------------------
1 apple,orange
2 orange
3 grapes
Я попытался COALESCE
, но это не работает, так как он объединялся бы в Y.
Я пробовал CASE WHEN f.apple ='Y' THEN 'apple' WHEN f.orange = 'Y' THEN 'orange' WHEN f.grapes = 'Y' THEN 'grapes' END AS fruits
, но вышеизложенное давало бы только одно из утверждений WHEN.
Я попытался CASE WHEN f.apple ='Y' THEN concat('apple,') WHEN f.orange = 'Y' THEN concat('orange,') when f.grapes = 'Y' THEN concat('grapes,') END AS fruits
, но это не работает, очевидно, потому, что это ошибка синтаксиса (относительно новый для SQL) и до сих пор, только один из WHEN
с будет работать.