我有一個連接表,其中包含“account_id”和“group id”,均由 GUID 表示。我正在嘗試合并列,因此我們得到一個“account_id”,所有“group_id”都合并到一個列/行,但顯示帳戶和組的實際名稱。
表帳戶
account_id Name
1 Henry
2 Smith
團體
Group_id Group_nameName
3 User
4 Admin
Account_Group_Join_Table
account_id group_id
1 3
1 4
2 3
預期結果:
Name Groups
Henry Dev,User
Smith User, Admin
到目前為止的代碼回傳 'account_id' 與 'group_id' 分組到單行/列
select account_id,
stuff((SELECT distinct ', ' group_id
FROM account_group_join t2
where t2.account_id = t1.account_id
FOR XML PATH('')),1,1,'') [Groups]
from account_group_join t1
group by account_id
uj5u.com熱心網友回復:
您只需要在子查詢中加入您的組表,這樣您就可以獲得名稱而不是 ID。您也可以只從Account外部查詢中進行選擇,并避免額外加入帳戶以獲取名稱:
SELECT a.account_id,
a.Name,
STUFF((SELECT DISTINCT ', ' g.group_nameName
FROM account_group_join AS ag
INNER JOIN [Group] AS g
ON g.group_id = ag.group_id
WHERE ag.account_id = a.account_id
FOR XML PATH('')),1,1,'') AS [Groups]
from Account AS a;
注意,我已經將您的別名從t1和更改t2為代表我正在使用別名的表的東西,您會發現這更容易,尤其是在處理更大的查詢時。更多閱讀:要踢的壞習慣:使用表別名,如 (a, b, c) 或 (t1, t2, t3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/389551.html
標籤:sql-server 查询语句
上一篇:基于引數的LAG和LEAD
