数据库后端是gcp的postgresqlon。
我在表中有一组具有ID的行。我正在尝试将其平铺成多列的行。
CREATE TABLE public.lines
(
line_no int NOT NULL,
line_content character varying(60) COLLATE pg_catalog."default" NOT NULL,
parent_id integer NOT NULL,
)
有数据
(1,'content 1',parent1)
(2,'content 2',parent1)
(3,'content 3',parent1)
...
试图找出查询以将结果展平为列,
select line1, line2,line3
where parent='parent1'
如何做到这一点?谢谢!!!!
答案 0 :(得分:1)
这不起作用。 Sql数据库是表格形式的。您不能随便返回X列宽的行。
您最好的选择是使用Postgres的array_agg
之类的东西,它将返回一个数组。如果没有,您可以使用group_concat
或类似的东西来产生一个逗号分隔的列表。
但这闻起来可能是一个可怕的主意。
如果需要,只需在代码中进行折叠/展平。
答案 1 :(得分:0)
如果在PostgreSQL上,您实际上是在寻找类似“数据透视表”的东西。我看一下crosstab
函数(请参阅here。)该函数处理以下格式的内容:
name value
A 1
A 2
B 3
B 4
B 5
产生
A 1 2 3
B 3 4 5