我是SQL新手,很抱歉,如果这是我的愚蠢!SQL区别子句不起作用?
我想选择其中的名字没有出现一次以上几列,但使用不同的条款因某种原因不这样做呢?
这里是我的查询:
SELECT DISTINCT A.fldContactName, A.fldsignonlinesetup, B.fldorderdate, A.fldemail
FROM tblcustomers AS A
LEFT JOIN tblorders AS B ON A.fldcustomerid = B.fldcustomerid
WHERE B.fldorderdate BETWEEN '2013-01-01' AND '2016-12-31'
AND A.fldemail <> 'NULL' AND A.fldcontactname <> 'NULL' AND A.fldcontactname <> ''
AND A.fldemail <> ''
AND A.fldsignonlinesetup = 0
ORDER BY A.fldcontactname ASC
我如何得到它,只显示的记录是唯一例如联系人姓名约翰史密斯只出现一次?
预期结果:
fldContactName: fldEmail: fldSignOnlineSetup: fldOrderDate:
James Smith [email protected] 0 2016-08-14
Bill Plant [email protected] 0 2015-02-24
实际结果:
fldContactName: fldEmail: fldSignOnlineSetup: fldOrderDate:
James Smith [email protected] 0 2016-08-14
Bill Plant [email protected] 0 2015-02-24
James Smith [email protected] 0 2014-06-20
提供样本数据和预期结果。 – Viki888
你真的是指'fldemail <>'NULL''或你打算'A.fldemail IS NOT NULL'吗?您的版本是一个字符串与四个字母的字符串比较。第二个检查值不是“NULL”。 –
独特之处在于所有领域都不一样。如果你想每个名字只有一个记录出现,那么你必须知道允许排除相关记录的业务规则,或者你需要将相关记录的值连接成一个字段,因为peopel可能有多个订单,所以不太可能您将永远只有一行代名并满足您的业务规则,除非他们只需要第一个订单或最近的订单。 – HLGEM