SQL:旋转后合并行

SQL: Combining rows after pivoting

我正在编写的 SQL 查询的一部分处理通用元数据 table。因此,我正在调整所需的元素以适应我需要的格式。我用“case”来做,我不确定这是不是问题,但是这个子查询的结果是这样的格式:

╔════╦═══════╦═══════╗
║ ID ║ DATA1 ║ DATA2 ║
╠════╬═══════╬═══════╣
║  1 ║ 1     ║ (NULL)║
║  1 ║(NULL) ║ 2     ║
║  1 ║(NULL) ║ (NULL)║ 
║  2 ║(NULL) ║ (NULL)║
║  2 ║ 2     ║ (NULL)║
║  3 ║(NULL) ║ (NULL)║
║  4 ║(NULL) ║ (NULL)║
╚════╩═══════╩═══════╝

不是最漂亮的输出,但我想我可以用“GROUP BY ID”修复它以简化输出。如下:

╔════╦═══════╦═══════╗
║ ID ║ DATA1 ║ DATA2 ║
╠════╬═══════╬═══════╣
║  1 ║(NULL) ║ (NULL)║ ?????
║  2 ║(NULL) ║   2   ║
║  3 ║(NULL) ║ (NULL)║ 
║  4 ║(NULL) ║ (NULL)║
╚════╩═══════╩═══════╝

可能我对GROUP BY的理解从根本上是错误的,但没想到ID 1的结果是这样的。现在我正在寻找一种合并行的方法。它应该看起来像这样:

╔════╦═══════╦═══════╗
║ ID ║ DATA1 ║ DATA2 ║
╠════╬═══════╬═══════╣
║  1 ║   1   ║   2   ║ 
║  2 ║(NULL) ║   2   ║
║  3 ║(NULL) ║ (NULL)║ 
║  4 ║(NULL) ║ (NULL)║
╚════╩═══════╩═══════╝

因此,简单地将行“相加”就足够了,因为对于一个 ID,单个数据列中永远不会有两个值。所以它总是“数字+ NULL”。有没有办法毫不费力地做到这一点?我觉得这应该不是什么大问题,但我想不出解决办法。

使用聚合查询:

SELECT ID, MAX(DATA1) AS DATA1, MAX(DATA2) AS DATA2
FROM yourTable
GROUP BY ID
ORDER BY ID;