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