来自不同id的表需要组合成一行。
+-----+-----+-----+-----+
| Id | Col1| Col2| Col3|
+-----+-----+-----+-----+
| 1 | | 1 | |
| 2 | | 2 | |
| 3 | 3 | | |
| 4 | 4 | | |
| 5 | | | 5 |
| 6 | | | 6 |
+-----+-----+-----+-----+我在同一张桌子上想要达到的目标。
+-----+-----+-----+-----+
| Id | Col1| Col2| Col3|
+-----+-----+-----+-----+
| 1 | 3 | 1 | 5 |
| 2 | 4 | 2 | 6 |
+-----+-----+-----+-----+我试图通过使用不同的id来聚合行
Select ID
,ID1 = max(Col1)
,ID2 = max(Col2)
,ID3 = max(Col3)
From Tbl
Group By ID发布于 2022-05-17 05:31:30
你的数据
create table test(
Id INTEGER NOT NULL
,Col1 INTEGER
,Col2 INTEGER
,Col3 INTEGER
);
INSERT INTO test
(Id,Col1,Col2,Col3)
VALUES
(1,NULL,1,NULL),
(2,NULL,2,NULL),
(3,3,NULL,NULL),
(4,4,NULL,NULL),
(5,NULL,NULL,5),
(6,NULL,NULL,6);UNION Max函数与Min函数的结果
SELECT 1 AS ID,
Min(col1) Col1,
Min(col2) Col2,
Min(col3) Col3
FROM test
UNION
SELECT 2 AS ID,
Max(col1) Col1,
Max(col2) Col2,
Max(col3) Col3
FROM test 此外,还可以使用multiple join、Subbquery和Where条件
SELECT a.id1 AS id,
b.col1,
a.col2,
c.col3
FROM (SELECT Row_number()
OVER (
ORDER BY id ) id1,
*
FROM Test
WHERE col2 IS NOT NULL) a
JOIN (SELECT Row_number()
OVER (
ORDER BY id ) id1,
*
FROM Test
WHERE col1 IS NOT NULL) b
ON a.id1 = b.id1
JOIN(SELECT Row_number()
OVER (
ORDER BY id ) id1,
*
FROM Test
WHERE col3 IS NOT NULL) c
ON a.id1 = c.id1 https://stackoverflow.com/questions/72267762
复制相似问题