使用 peewee 将行展平为列

Use peewee to flatten rows into columns

数据库后端是 postgresqlon gcp。

我在 table 中有一组具有 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'

如何实现??谢谢!!!!

这行不通。 Sql 数据库是表格形式的。您不能随意 return 行 X-columns 宽。

您最好的选择是使用像 Postgres 的 array_agg 这样的东西,它将 return 一个数组。如果没有,您可以使用 group_concat 或其他东西来生成 comma-separated 列表。

但这闻起来很糟糕,可能是个糟糕的主意。

如有必要,只需在代码中执行 collapse/flatten。

如果在 PostgreSQL 上,您确实在寻找 "pivot table" 之类的东西。我会查看 crosstab 函数(请参阅 here。)它处理以下格式的内容:

name value
A    1
A    2
B    3
B    4
B    5

并生产

A 1  2  3
B 3  4  5