gpt4 book ai didi

sql-server - 给定2个表,如何将它们合并到 View 中?

转载 作者:行者123 更新时间:2023-12-02 19:22:43 25 4
gpt4 key购买 nike

给定以下ADuser表:

AD Group    UserID
Group1 User1
Group2 User2
Group3 User1
Group3 User3

Group_Access表:

AD Group    Org Codes
Group1 M500_ABC|1098|123_KL|Z45557|f908L_P|234G|
Group2 123_KL|Z45557|f908L_P|
Group3 12345|

我如何将它们合并到一个 View 中,以便我们最终得到这样的结果,其中组织代码组合在 1 个匹配的用户 ID 下?

UserID      Org Codes
User1 M500_ABC|1098|123_KL|Z45557|f908L_P|234G|12345|
User2 123_KL|Z45557|f908L_P|
User3 12345|

请注意,由于 User1 属于多个组,即 Group1 和 Group3,因此 user1 这 2 个组中的所有组织代码在最终 View 中都合并到 1 中,并附加了额外的 12345| 组织代码

到目前为止我尝试过的:

CREATE VIEW UserOrgCodesView
AS SELECT ADuser.UserID, Group_Access.[Org Codes]
FROM ADuser
INNER JOIN Group_Access ON ADuser.[AD Group]=Group_Access.[AD Group];

但是这已经产生了以下结果

UserID  Org Codes
User1 M500_ABC|1098|123_KL|Z45557|f908L_P|234G|12345|
User2 123_KL|Z45557|f908L_P|
User1 12345|
User3 12345|

最佳答案

where the orgcodes are combined under 1 matching userid?

You'll need to use STRING_AGG which is only available in SQL Server 2017 or later .

此查询还在输入[组织代码]值上使用TRIM(),以帮助防止'||'出现在输出中当现有字符串连接在一起时。

SELECT
u.UserId,
STRING_AGG( TRIM( '|' FROM g.[Org Codes] ), '|' ) AS [Org Codes]
FROM
ADuser AS u
INNER JOIN Group_Access AS g ON u.[AD Group] = g.[AD Group]
GROUP BY
u.UserId;

也就是说,像这样对数据进行非规范化通常是一个坏主意。您应该向客户端返回面向行的数据,并且仅对 UI 层中的数据进行非规范化。

关于sql-server - 给定2个表,如何将它们合并到 View 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62827060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com