在对

时间:2017-04-13 20:14:30

标签: amazon-redshift

我正在尝试对多行类似数据进行分组,并将差异化的行数据转换为Amazon Redshift上的列。使用示例更容易解释 - >

起始表

+-------------------------------------------+
|**Col1** | **Col2** | **Col3** | **Col 4** |
|    x    |    y     |    A     |    123    |
|    x    |    y     |    B     |    456    |
+-------------------------------------------+

期望的最终结果

+-------------------------------------------+
|**Col1** | **Col2** |  **A**   |   **B**   |
|    x    |    y     |    123   |    456    |
+-------------------------------------------+

基本上按列1和列2进行分组,第3列中的条目成为新列标题,第4列中的条目成为新列的条目。

任何帮助超级赞赏!

1 个答案:

答案 0 :(得分:1)

没有原生功能,但您可以执行以下操作:

SELECT
  COL1,
  COL2,
  MAX(CASE WHEN COL3='A' THEN COL4 END) AS A,
  MAX(CASE WHEN COL3='B' THEN COL4 END) AS B
FROM table
GROUP BY COL1, COL2

您实际上需要对列名进行硬编码。根据数据无法自动定义列。

这是标准的SQL - 没有特定于Amazon Redshift。