选择具有3个内部联接的DISTINCT值

时间:2011-07-31 22:55:23

标签: sql sql-server distinct

我有几个表需要链接在一起以获取特定值,这是我当前的查询

SELECT DISTINCT bu.Email,iv.Code,ex.ExNumber 
FROM Invoices AS iv
INNER JOIN Clients AS cs
ON iv.Code = cs.Code
INNER JOIN BusinessUser_ExNumbers AS ex
ON cs.ExNumber = ex.ExNumber 
INNER JOIN BusinessUsers AS bu
ON ex.Userid = bu.Id
WHERE iv.BatchId = '74b43669-c80f-4b44-999c-a1dfe5695844' // Test value

基本上我发票的链接保存在发票表中,我需要做的是发送一个链接给指定为发票收件人的用户。代码可以工作,但它并不像我想的那样“独特”。我不希望任何行具有相同的电子邮件,并且与任何其他行相同。不幸的是,如果有超过1个iv.Code最终链接到特定用户,我会得到多行。我明白为什么会这样,但我想不出办法让这种情况不会发生。

谢谢!

编辑:抱歉这对我来说真的很蠢。我不需要选择iv.Code,这就是导致问题的原因。这可能就是为什么它没有多大意义。无论如何,因为我发布了问题,我已经尝试过马丁史密斯回答下面的问题并且它有效,所以这就是问题的答案。如果您不需要iv.Code,则可以将其删除。

1 个答案:

答案 0 :(得分:1)

如果特定MAX组合有多个代码,则以下内容会返回Email, Number代码。

SELECT bu.Email,
       MAX(iv.Code) AS Code,
       ex.ExNumber
FROM   Invoices AS iv
       INNER JOIN Clients AS cs
         ON iv.Code = cs.Code
       INNER JOIN BusinessUser_ExNumbers AS ex
         ON cs.ExNumber = ex.ExNumber
       INNER JOIN BusinessUsers AS bu
         ON ex.Userid = bu.Id
WHERE  iv.BatchId = '74b43669-c80f-4b44-999c-a1dfe5695844'
GROUP  BY bu.Email,
          ex.ExNumber