【发布时间】:2021-07-07 12:42:26
【问题描述】:
我需要一些关于下面 Postgres 支点的提示。
我有一张这样的桌子:
+------+---+----+
| round| id| kpi|
+------+---+----+
| 0 | 1 | 0.1|
| 1 | 1 | 0.2|
| 0 | 2 | 0.5|
| 1 | 2 | 0.4|
+------+---+----+
Id 的数量未知。
我需要将 id 列转换为多列(相同数量的不同 id),以 KPI 值作为它们的值,在新表中我们保持第一个表中的轮数。
+------+----+----+
| round| id1| id2|
+------+----+----+
| 0 | 0.1| 0.5|
| 1 | 0.2| 0.4|
+------+----+----+
是否可以在 SQL 中执行此操作?该怎么做?
【问题讨论】:
-
不可能。 SQL 语言的基本限制之一是所有列的数量、名称和数据类型必须在运行查询之前让数据库知道。在您的应用程序中显示这样的表要好得多,SQL 不是为此而设计的。
-
@a_horse_with_no_name:准确地说:不是之前,而是在运行查询的时间——这允许多态函数。
-
是否存在已知的 最大 个不同 ID?或者数据库中是否存在可以为我们提供目标列的元信息(如目标表)?否则,您需要一个两步工作流程: 1.:构建查询 2. 执行它。也不是真正的问题......
标签: sql postgresql pivot