【问题标题】:Remove duplicate left outer join删除重复的左外连接
【发布时间】:2021-03-20 02:41:22
【问题描述】:

我需要帮助从我的 sql 查询的以下结果中合并 2 个重复的行。

结果

查询

SELECT DISTINCT
    a.[LocationID],
    a.[BuildingCode],
    a.[LocationCode],
    a.[LocationName],
    c.UserName,
    d.RoleName  
FROM 
    [dbo].[Location] a
LEFT OUTER JOIN 
    [dbo].[UserLocation] b ON a.LocationID = b.LocationID
LEFT OUTER JOIN 
    [dbo].[User] c ON b.UserID = c.UserID AND c.RoleID = 2
LEFT OUTER JOIN 
    [dbo].[Role] d ON c.RoleID = d.RoleID

如果您可以看到有 2 行 LocationId 为 3057,其中一行为 Role Admin,另一行为 NULL。我想合并它们,并希望只显示一行与 Role Admin。

感谢您对此的关注。

【问题讨论】:

标签: sql sql-server left-join distinct outer-join


【解决方案1】:

试试这个:

SELECT
    a.[LocationID],
    a.[BuildingCode],
    a.[LocationCode],
    a.[LocationName],
    MAX(c.UserName) UserName,
    MAX(d.RoleName ) RoleName 
FROM 
    [dbo].[Location] a
LEFT OUTER JOIN 
    [dbo].[UserLocation] b ON a.LocationID = b.LocationID
LEFT OUTER JOIN 
    [dbo].[User] c ON b.UserID = c.UserID AND c.RoleID = 2
LEFT OUTER JOIN 
    [dbo].[Role] d ON c.RoleID = d.RoleID
GROUP BY 
    a.[LocationID],
    a.[BuildingCode],
    a.[LocationCode],
    a.[LocationName]

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 1970-01-01
    • 2013-01-14
    • 2014-07-21
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    相关资源
    最近更新 更多