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 ('?????', '??????????????', '???????', '??? ??????????')

结果我有 3 列具有相同的主键。

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

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

回答

我猜你想要聚合:

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";


以上是PostgreSQL如何按主键按行分组?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>