我們的一個日志表得到如下結果
Unique__Nm reviewer 1 reviewer 2 reviewer 3
--------------------------------------------------
859 NULL NULL Joel
859 NULL Joseph NULL
859 Antony NULL NULL
163 Robert NULL NULL
163 NULL Joseph NULL
164 NULL Andrew NULL
896 NULL karry NULL
我需要根據唯一編號對資料進行分組并提取如下結果
Unique__Num reviewer 1 reviewer 2 reviewer 3
------------------------------------------------
859 Antony Joseph Joel
163 Robert Joseph NULL
164 NULL Andrew NULL
896 NULL Kerry NULL
有人可以幫忙嗎?
uj5u.com熱心網友回復:
如果您的輸入是這樣的:
Unique__Nm reviewer 1 reviewer 2 reviewer 3
--------------------------------------------------
859 NULL NULL Joel
859 NULL Joseph NULL
859 Antony NULL NULL
859 NULL Edmund NULL
輸出中的審稿人 2 應該是什么?
如果這樣的輸入是可能的,你應該指定應該發生什么,即。作為rewiever 2,我們應該得到什么。
否則,這將完成作業:
SELECT Unique__Nm, max([reviewer 1]), max([reviewer 2]), max([reviewer 3])
FROM table
GROUP BY Unique__Nm;
uj5u.com熱心網友回復:
您的資料
CREATE TABLE test(
Unique_Nm INTEGER NOT NULL
,[reviewer 1] VARCHAR(60)
,[reviewer 2] VARCHAR(60)
,[reviewer 3] VARCHAR(60)
);
INSERT INTO test
(Unique_Nm,[reviewer 1],[reviewer 2],[reviewer 3]) VALUES
(859,NULL,NULL,'Joel'),
(859,NULL,'Joseph',NULL),
(859,'Antony',NULL,NULL),
(163,'Robert',NULL,NULL),
(163,NULL,'Joseph',NULL),
(164,NULL,'Andrew',NULL),
(896,NULL,'karry',NULL);
使用提供String_agg提供更好的情況,其中每個 Unique_Nm 存在兩個 [reviwer] 并且它將concat它們,此外,它掩蓋空值。
select Unique_Nm,
string_agg([reviewer 1],',') [reviewer 1],
string_agg([reviewer 2],',') [reviewer 2],
string_agg([reviewer 3],',') [reviewer 3]
from test
group by Unique_Nm
但是Max也可以使用
select Unique_Nm,
MAX([reviewer 1]) [reviewer 1],
MAX([reviewer 2]) [reviewer 2],
MAX([reviewer 3]) [reviewer 3]
from test
group by Unique_Nm
小提琴手
uj5u.com熱心網友回復:
如果所有reviewer 1,reviewer 2和reviewer 3列只能有一個非空值 per Unique__Nm,您可以使用按值coalesce分組的簡單每列 Unique_Nm,例如
SELECT
Unique__Nm,
COALESCE([reviewer 1]) as [reviewer 1],
COALESCE([reviewer 2]) as [reviewer 2],
COALESCE([reviewer 3]) as [reviewer 3]
FROM table
GROUP BY Unique__Nm
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/482501.html
