SQL - 带有 ID 的多行,但我想将所有信息加入一列

big*_*add -1 sql

我有表格示例:

ID 行A 行B 行C
1 VA1 空值 空值
2 VB1 空值 空值
1 空值 VA2 空值
2 空值 VB2 空值
1 空值 空值 VA3
2 空值 空值 VB3

我想得到这个结果:

ID 行A 行B 行C
1 VA1 VA2 VA3
2 VB1 VB2 VB3

我试过

SELECT DISTINCT
    a.id,
    b.RowA,
    c.RowB,
    d.RowC,
FROM
    (SELECT DISTINCT ID
     FROM Example) a
LEFT JOIN 
    (SELECT DISTINCT 
         id,
         RowA
     FROM Example
     WHERE RowA IS NOT NULL) b ON a.id = b.id
LEFT JOIN 
    (SELECT DISTINCT
         id,
         RowB,
     FROM Example
     WHERE RowB IS NOT NULL) c ON a.id = c.id
LEFT JOIN 
    (SELECT DISTINCT
         id,
         RowC
     FROM FLOWFILE
     WHERE RowC IS NOT NULL) d ON a.id = d.id
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法来做到这一点?

谢谢你们

Tim*_*sen 5

我想你想要:

SELECT id, MAX(RowA) AS RowA, MAX(RowB) AS RowB, MAX(RowC) AS RowC
FROM Example
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)

在这里,我们聚合id并简单地取每个列的最大值 per idMAX忽略NULL值是函数的一个属性。由于每个id只有一个非NULL值,因此上述方法有效。