我正在使用四个单独的表,我似乎无法弄清楚为什么我的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
答案 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