Один из столбцов (называемых подробностями) в моей таблице относится к типу данных jsonb и имеет формат данных примерно так:
{"media_height":"350", "media_height":"450", "media_alt":"", "file_name":"myfile.jpeg"}
Это поле используется в том случае, если я хочу отметить записи пропущенного альтернативного текста.
SELECT
distinct ON ( p.property_name )
p.id, p.property_name,
CASE
WHEN mma.id IS NULL THEN 'Z'
WHEN mma.details->'media_alt'::TEXT IS NULL THEN 'NO'
ELSE 'YES' END as has_media_alt
FROM properties p
LEFT JOIN marketing_media_associations mma ON ( mma.reference_id = p.id )
GROUP BY p.id, p.property_name , mma.details->'media_alt', mma.id
ORDER BY p.property_name, has_media_alt ASC
Приведенный выше запрос дает мне точные результаты для Z, но он никогда не идет в блок NO. Что мне здесь не хватает?