i have following query
x
SELECT "Nomenclature",
CASE
WHEN ad."Title" = 'Кухня'
THEN au."Value"
ELSE NULL END AS "Кухня",
CASE
WHEN ad."Title" = 'Вегетарианское'
THEN au."Value"
ELSE NULL END AS "Вегетарианское",
CASE
WHEN ad."Title" = 'Постное' THEN au."Value"
ELSE NULL END AS "Постное",
CASE
WHEN ad."Title" = 'Постное'
THEN au."Value"
ELSE NULL END AS "Для ресторанов"
FROM "AttributeUnit" au
JOIN "AttributeDictionary" ad ON au."AttributeDictionary" = ad."@AttributeDictionary"
WHERE "Nomenclature" = ANY (ARRAY(SELECT "@Nomenclature" FROM base_info))
AND ad."Title" IN ('Кухня', 'Вегетарианское', 'Постное', 'Для ресторанов')
In the result i have 3 columns with same primary key.
How to group by the result that it will looks like
Nomenclature. | Кухня | Вегетерианское | Постное | Для ресторанов |
---|---|---|---|---|
8677 | Италия | True |
Advertisement
Answer
I’m guessing you want aggregation:
SELECT "Nomenclature",
MAX(CASE WHEN ad."Title" = 'Кухня' THEN au."Value" END) AS "Кухня",
MAX(CASE WHEN ad."Title" = 'Вегетарианское' THEN au."Value" END) AS "Вегетарианское",
MAX(CASE WHEN ad."Title" = 'Постное' THEN au."Value" END) AS "Постное",
MAX(CASE WHEN ad."Title" = 'Постное' THEN au."Value" END) AS "Для ресторанов"
FROM "AttributeUnit" au JOIN
"AttributeDictionary" ad
ON au."AttributeDictionary" = ad."@AttributeDictionary"
WHERE "Nomenclature" = ANY (ARRAY(SELECT "@Nomenclature" FROM base_info)) AND
ad."Title" IN ('Кухня', 'Вегетарианское', 'Постное', 'Для ресторанов')
GROUP BY "Nomenclature";