我正在尝试对多行类似数据进行分组,并将差异化的行数据转换为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列中的条目成为新列的条目。
任何帮助超级赞赏!
答案 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。