SQL查询 - 区别似乎不过滤

时间:2013-11-06 17:48:43

标签: sql duplicates distinct

我正在使用四个单独的表,我似乎无法弄清楚为什么我的DISTINCT没有过滤结果。我正在尝试为此查询中的每个acct.Name获取单个结果。无论我是否使用DISTINCT,我都会得到完全相同的结果。

Select DISTINCT
  acct.Name,
  inv.InvoiceNumber,
  acct.AccountNumber,
  addr.Line1,
  addr.Line2,
  addr.Line3,
  addr.City,
  addr.StateOrProvince,
  addr.postalcode
FROM InvoiceBase inv, AccountBase acct
JOIN AccountExtensionBase base 
  ON base.AccountId = acct.AccountId
JOIN CustomerAddressBase addr
  ON addr.ParentId = acct.AccountId
WHERE
  inv.AccountId=acct.AccountId And
  base.New_cocat_master = 1 And
  base.New_CompanyId = 1 And
  inv.StateCode = 0 And
  inv.Name = '2013 ' + acct.AccountNumber
ORDER by acct.Name

我现在得到的第一个结果是前三个值(acct.Name,inv.InvoiceNumnber,acct.AccountNumber),其余列是空白的。第二行包含所有包含信息的列。我只是想让acct.Name成为DISTINCT

2 个答案:

答案 0 :(得分:1)

行是DISTINCT

当您选择多个字符串时,这可能会造成混淆,因为可能存在隐藏的字符/空格。选择每个字段的长度并比较所谓的重复行。

答案 1 :(得分:0)

事实证明我所要做的就是在WHERE中添加一个简单的子句,因为有效发票需要地址(在哪里发送):

WHERE
  base.New_cocat_master = 1 And
  base.New_CompanyId = 1 And
  inv.StateCode = 0 And
  inv.Name = '2013 ' + acct.AccountNumber And
  addr.Line1 IS NOT NULL