【发布时间】:2018-09-11 08:39:06
【问题描述】:
我的查询应该计算上个月特定客户被添加到表中的次数。如果只使用:
WHERE Return_Table.DateAdded >= DATEADD(month, -1, GETDATE())
然后我在上个月得到了所有的“CustomerID”和“TimesReturned”,这似乎是有效的,但是当我使用“AND”和“OR”搜索特定条目时 - 我得到了下面显示的结果,但是这个结果不再计算上个月内的条目。
事实上,当我在搜索中包含或多或少的特定客户时,“TimesReturned”值会发生变化。因此,如果我搜索 'cust1-4' 然后搜索 'cust1-2' - TimesReturned 计数 1 和 2 会发生变化。
我的查询:
SELECT TOP 20 Return_Table.Customer_ID, COUNT(*) AS TimesReturned
FROM Return_Table
WHERE Return_Table.DateAdded >= DATEADD(month, -1, GETDATE()) AND
Return_Table.Customer_ID ='cust1' OR
Return_Table.Customer_ID ='cust2' OR
Return_Table.Customer_ID ='cust3' OR
Return_Table.Customer_ID ='cust4'
GROUP BY Return_Table.Customer_ID
ORDER BY TimesReturned DESC
结果:
Customer_ID TimesReturned
Cust1 24
Cust2 14
Cust3 4
Cust4 2
..... ....
虽然这个结果的格式是正确的,但我的查询一定有问题,才能像这样改变值。
【问题讨论】:
标签: sql sql-server operators logical-operators