如何在一个行中同时获得这两个结果?

时间:2019-04-10 12:10:08

标签: sql postgresql

我有一个查询,该查询收集表的结果。

以下是查询:

SELECT id, number FROM from list
union select id, number from list

两个字段都是整数,并且id是双倍的,但数字是唯一的。

这是结果

id     number
19564  234287
19564  234288

该怎么办,它看起来像这样:

id     number
19564  234287;234288

2 个答案:

答案 0 :(得分:2)

您要寻找string_agg()吗?

select id, string_agg(distinct number, ';')
from list
group by id;

答案 1 :(得分:0)

我认为您需要一个交叉表查询

.. autoclass package.baz.Foo.original
   :members:

结果:

/* TO CREATE CROSSTAB EXTENSION*/
CREATE EXTENSION IF NOT EXISTS tablefunc;

/* CROSSTAB QUERY */
SELECT * FROM crosstab (  
  'SELECT
    id,
    number   
  FROM list 
  ORDER BY id ASC, number ASC;')
 AS ct(
   id INT,
   firstnumber NUMERIC,
   secondnumber NUMERIC )
 ; 

如果这对您有效,并且您希望将两个金额都放在一个列中,则可以尝试将它们串联。

希望有帮助。