如何将多行查询结果合并为一行

问题描述 投票:0回答:1

我有这个查询的结果。

select distinct "CVE_ID","V19_200","V20","V20_100","V21","V21_100","V21_200" from cve_table where "CVE_ID"='CVE-2022-22965';
     CVE_ID     | V19_200 | V20 | V20_100 | V21 | V21_100 | V21_200 
----------------+---------+-----+---------+-----+---------+---------
 CVE-2022-22965 | f       | f   | f       | f   | f       | f
 CVE-2022-22965 | f       | f   | f       | f   | t       | f
 CVE-2022-22965 | f       | f   | f       | t   | f       | f
 CVE-2022-22965 | f       | f   | t       | f   | f       | f
 CVE-2022-22965 | f       | t   | f       | f   | f       | f
 CVE-2022-22965 | t       | f   | f       | f   | f       | f

我要的是这个

     CVE_ID     | V19_200 | V20 | V20_100 | V21 | V21_100 | V21_200 
----------------+---------+-----+---------+-----+---------+---------
 CVE-2022-22965 | t       | t   | t       | t   | t       | f

我尝试过 UNION 和 UNION ALL 但它对我不起作用,或者我无法以正确的方式做到这一点。

postgresql ubuntu row
1个回答
0
投票

使用 BOOL_OR 和 GROUP BY,即:

SELECT "CVE_ID", BOOL_OR("V19_200") as "V19_200", BOOL_OR("V20") as "V20", BOOL_OR("V20_100") as "V20_100", BOOL_OR("V21") as "V21", BOOL_OR("V21_100") as "V21_100", BOOL_OR("V21_200") as "V21_200" FROM cve_table WHERE "CVE_ID" = 'CVE-2022-22965' GROUP BY "CVE_ID";
© www.soinside.com 2019 - 2024. All rights reserved.