对不起,我是使用T-SQL的新手,我想知道如何获得不会发生多次的价值。我已经尝试过了,但它没有用。
SELECT DISTINCT *
FROM Orders
WHERE PmtType NOT IN ('VISA','DISC','FUNDING','DEALER CHECK','MC'
,'AMEX','BONUS POOL','DLR CK - NET30'
,'WIRE','MO','EXCHANGE','ONLINE','NULL')
AND OrderDate BETWEEN '2014-03-01 00:00:00'
and '2015-03-01 00:00:00'
AND CompanyId IN ('1311','8390','8394','8396','8397','8399','3966',
'8407','8408','8315','8411','8413','8414','8416'
,'8419','4850','8426','8428','8429','8430')
我想要得到的就是这个。获得免费演示的公司。哪个PmtType是免费的,但从未购买过产品。
如果客户从不购买产品,则客户ID不应出现在
中PmtType IN ('VISA','DISC','FUNDING','DEALER CHECK'
,'MC' ,'AMEX','BONUS POOL','DLR CK - NET30'
,'WIRE','MO','EXCHANGE','ONLINE','NULL')
答案 0 :(得分:1)
如果我正确地阅读了这个问题,你想知道哪些ID只有1个订单,这就可以了。我使用了通用字段名称,因为您没有指定要查找的“值”...
编辑:在OP评论后添加NOT EXISTS
子句,您可能不再需要该组,这取决于您...
SELECT CompanyId --add fields here as needed.
,Count(*) [Occurences]
FROM Orders o
WHERE PmtType = 'FREE'
AND NOT EXISTS (SELECT CompanyId
FROM Orders io
WHERE o.CompanyId = io.CompanyId
AND PmtType <> 'FREE' )
GROUP BY CompanyId --add fields here as needed.
HAVING Count(*) = 1 --leave this out to see how many free demos each company got.