SQL计数日期范围

kiw*_*jus 2 sql date range

我正在尝试查询我的SQL数据库,以获取每个客户在特定日期范围内的订单数量.

我有一份订单清单如下

CustomerName       ClientID        DateOrdered
Customer No.2         10            2011-11-25
Customer No.3         11            2011-10-15
Customer No.3         11            2011-11-25
Run Code Online (Sandbox Code Playgroud)

我希望能够找出特定客户在2011-11-1和2011-11-30之间订了多少订单,这应该会导致:

CustomerName       ClientID        Number
Customer No.3         11             1
Customer No.2         10             1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经设法得到了这个

SELECT CustomerName, ClientID, COUNT(*) AS Number      
FROM Orders t     
GROUP BY CustomerName, ClientID      
HAVING COUNT(*) =      
(SELECT MAX(Number)         
FROM          
(SELECT CustomerName, ClientID, COUNT(*) AS Number             
FROM Orders            
GROUP BY CustomerName, ClientID ) x       
WHERE CustomerName = t.CustomerName )
Run Code Online (Sandbox Code Playgroud)

这给了我客户所做的每一笔订单

CustomerName       ClientID        Number
Customer No.3         11             2
Customer No.2         10             1
Run Code Online (Sandbox Code Playgroud)

我是否正确地解决这个问题,或者是否有一种我完全忽略的简单方法!

小智 6

select CustomerName, ClientID, count(*)
from
(
    select CustomerName, ClientID
    from Orders
    where datediff(mm, DateOrdered, getdate()) <= 1
 )a
group by CustomerName, ClientID
Run Code Online (Sandbox Code Playgroud)

这样做的目的是利用一个子查询来按行给定月份的日期过滤行(这似乎是你要找的东西).然后它按CustomerName和分组ClientID并得到他们的订单总和.


Mic*_*aga 6

应该工作正常:

select CustomerName, ClientID, count(*) as Number
from Orders
where DateOrdered between '20111101' and '20111130'
group by CustomerName, ClientID
Run Code Online (Sandbox Code Playgroud)