簡體   English   中英

在MSSQL中模擬group_concat,模糊列名?

[英]emulate group_concat in MSSQL, ambiguous column name?

我目前正在嘗試將MySQL中的group_concat函數模擬為MSSQL。 我遵循了此處此處的代碼格式。 問題是,當我嘗試執行查詢時,我收到了我的列RoleID的消息Ambiguous column name 這是我的查詢:

select UserName, RoleID from tb_UserInRoles
cross apply(
    select RoleName from tb_Roles
    where tb_UserInRoles.RoleID = tb_Roles.RoleID
    for XML Path('')
) fxMerge (RoleID) group by UserName, RoleID

我想知道為什么這個特定的代碼格式會出現Ambiguous column name錯誤消息。 我需要讓這個查詢工作並理解它。 在此先感謝您的幫助。

我計划在多對多關系表中使用它,其中系統的用戶可以有多個角色,如下所示:

|  User  |   Role  |
|--------|---------|
| JamesP |  Maker  |
| JamesP | Approver|
| JamesP |  Admin  |

我希望結果查詢是這樣的:

|  User  |           Role           |
|--------|--------------------------|
| JamesP |  Maker, Approver, Admin  |

試試這個:

SELECT UIR.UserName, MAX(STUFF(fxMerge.RoleID, 1, 1, '')) 
FROM tb_UserInRoles UIR
CROSS APPLY(
    SELECT ',' + RoleName 
    FROM tb_UserInRoles UIR1 
    INNER JOIN tb_Roles RM ON UIR1.RoleID = RM.RoleID
    WHERE UIR.UserName = UIR1.UserName 
    FOR XML PATH('')
) fxMerge (RoleID) 
GROUP BY UIR.UserName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM