1

我正在使用四个单独的表,我似乎无法弄清楚为什么我的 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.InvoiceNumber、acct.AccountNumber),其余列为空白。第二行包含所有包含信息的列。我只是想让 acct.Name 成为 DISTINCT

4

2 回答 2

1

这些行是不同的

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

于 2013-11-06T17:54:53.007 回答
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
于 2013-11-07T15:25:58.903 回答