【解決方法】同じ ID を持つ複数の行を 1 つの行にマージするにはどうすればよいですか。


私はテーブルを持っています:

ID |A |B |C
1 NULL DEF NULL
1 ABC NULL NULL
2 XYZ NULL NULL
3 IJKヌルヌル
3 NULL LMN NULL
3 NULL NULL PQR

私は結果を取得したい
ID |A |B |C
1 ABC DEF NULL
2 XYZ NULL NULL
3 IJK LMN PQR

私が試したこと:

CTEを試しましたが、まったく同じ結果が得られません

解決策 1

GROUP BY を使用するだけです。

SQL
select ID, MAX(A) AS A, MAX(B) AS B, MAX(C) AS C from #t
GROUP BY ID

しかし! SerenityNowDev が指摘したように … Id = 1 の A に複数の値がある場合はどうなりますか … MAX それでも必要な結果が得られますか、それとも別の集計関数を使用する必要がありますか? あなただけが決めることができます

解決策 2

E.EmpId AS ユーザーコードを選択し、
E.EmpCode AS ユーザー名、
E.FirstName AS EmployeeName、
m.EmpCode AS Managercode,
STUFF((select ‘,’ +M.FirstName
から [dbo].[TblEmployee] e
どこで e.EmpId = m.EmpId
for xml path(”)),1,1,”) as managername,r.rolename
から [dbo].[TblEmployee] e
内部結合 [dbo].[TblEmployee] M ON M.EmpId =E.ManagerId
内部結合 [User].[TblRoles] r ON e.EmpId = r.RoleId

コメント

タイトルとURLをコピーしました