我有表格示例:
| 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)
有没有更简单的方法来做到这一点?
谢谢你们
我想你想要:
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 id。MAX忽略NULL值是函数的一个属性。由于每个id只有一个非NULL值,因此上述方法有效。