PostgreSQL如何按主键按行分组?

Ale*_*tin 1 sql postgresql

我有以下查询

 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 ('?????', '??????????????', '???????', '??? ??????????')
Run Code Online (Sandbox Code Playgroud)

结果我有 3 列具有相同的主键。
在此处输入图片说明

如何按看起来像的结果进行分组

命名法。 ????? ??????????????? ??????? ????????????
8677 ?????? 真的

Gor*_*off 5

我猜你想要聚合:

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";
Run Code Online (Sandbox Code Playgroud)