Sql server 防止在左联接期间由于右表中的多个值而重复

Sql server 防止在左联接期间由于右表中的多个值而重复,sql-server,join,left-join,Sql Server,Join,Left Join,我有两张桌子 表1 表2 在进行左连接之后,我得到的结果是 结果表 由于表2中有重复的值,我在左连接后得到了额外的行。如何在左联接期间避免这些重复值 期望输出 MS SQL Server 2017架构设置: 问题1: : 您的预期输出是什么?使用DISTINCT如何?选择DISTINCT…有多种方法可以执行此操作。如果你不知道自己想要完成什么,就不可能知道正确的答案。请不要发布图片,而是发布文本。我们无法复制/粘贴测试。此外,请向我们展示您迄今为止所做的工作。您说表2有重复项是令人困惑的-从您发

我有两张桌子

表1

表2

在进行左连接之后,我得到的结果是

结果表

由于表2中有重复的值,我在左连接后得到了额外的行。如何在左联接期间避免这些重复值

期望输出

MS SQL Server 2017架构设置:

问题1:

:


您的预期输出是什么?使用DISTINCT如何?选择DISTINCT…有多种方法可以执行此操作。如果你不知道自己想要完成什么,就不可能知道正确的答案。请不要发布图片,而是发布文本。我们无法复制/粘贴测试。此外,请向我们展示您迄今为止所做的工作。您说表2有重复项是令人困惑的-从您发布的少量信息来看,表2看起来将是一个客户表,其中客户id将是主键,因此不可能有重复项。谢谢。但是,如果表1中的同一个客户ID有多个值呢?@vicky你告诉我们。如果表1中的同一客户ID有多个值,您想怎么做?把它们加起来?取最大值?显示所有值?我猜你会在这里的某个地方进行聚合,但你需要提供足够的信息,以便我们帮助你。
CREATE TABLE Table1 (CustomerID int,ItemID int,QTY int)
CREATE TABLE Table2 (CustomerID int,Customer varchar(255))
INSERT INTO Table1 (CustomerID,ItemID,QTY)VALUES(1234,1,2),
                                                (1235,2,3),
                                                (1236,3,5),
                                                (1237,4,7)

INSERT INTO Table2(CustomerID,Customer)VALUES(1234,'ABC'),
                                             (1235,'XYZ'),
                                             (1234,'ABC'),
                                             (1236,'MNO'),
                                             (1237,'MNM'),
                                             (1235,'XYZ')
SELECT DISTINCT T1.CustomerID,T1.ItemID,T1.QTY,T2.Customer
FROM Table1 T1 
LEFT JOIN Table2 T2 ON T1.CustomerID=T2.CustomerID
| CustomerID | ItemID | QTY | Customer |
|------------|--------|-----|----------|
|       1234 |      1 |   2 |      ABC |
|       1235 |      2 |   3 |      XYZ |
|       1236 |      3 |   5 |      MNO |
|       1237 |      4 |   7 |      MNM |