【问题标题】:SQL pivot table for unknown number of columns未知列数的 SQL 数据透视表
【发布时间】: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


【解决方案1】:

有可能,check this question

另一个是我做的一个支点,也有未知数量的列,也许它也可以帮助你:Advanced convert rows to columns (pivot) in SQL Server

【讨论】:

  • 这个问题与 SQL Server 无关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多