使用peewee将行平整为列

时间:2019-07-02 17:04:22

标签: peewee

数据库后端是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'

如何做到这一点?谢谢!!!!

2 个答案:

答案 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