【发布时间】:2018-11-09 21:48:17
【问题描述】:
我有一个表,其中有一个名为 metrics 的列,它有不同的可能指标:
Metric Value
--------------
A 100
B 200
C 300
我想从这个基表中派生出另一个表,它可能有如下行:
Metric Value
--------------
A 100
B 200
C 300
C/A 3
B/A 2
基本上保持原始行不变 + 根据现有值的组合添加一些新行。
我能想到的一种方法是: 1. 透视数据 2.把它放在一些临时表或CTE中 3.选择所有现有的指标列+我需要的新计算列 4. unpivot 最后一步的输出
有没有更好的方法来使用 SQL 实现这一点?或者也许任何其他可能的方式? 另外,redshift 不支持 Pivot 功能,除了使用 Case Statements 之外,还有其他解决方法吗?
【问题讨论】:
-
您使用的是 Amazon Redshift、MS SQL Server 还是 PostgreSQL?
-
你考虑过使用过程吗?
-
我删除了不兼容的数据库标签。
-
将额外的行放入第二个表中,为两个表的并集创建一个视图。
-
@jmelesky - 我同时使用 Redshift PostgreSQL 和 SQL Server,因此我有兴趣找到适用于两者或两者之一的解决方案。
标签: sql