计算6个月内的所有日期,而不是全部

时间:2019-04-28 21:56:59

标签: sql-server

我正在尝试输出每个销售人员在过去六个月中售出的商品,但我使用的是计算所有日期并将其输出。

SELECT SalespersonNo, COUNT (SalespersonNo) AS ['CarsSold']
FROM CarForSale
WHERE DateSold > '01/08/2018'
GROUP BY SalespersonNo;

如上所述,它输出的所有日期相加,而不是我想要的,它将所有过去6个月内售出的汽车相加

这些是我得到的结果:

SalespersonNo   'CarsSold'
100001           4
100002           1
100003           1
100004           4
100005           2
100010           1
100011           2
100012           2
100015           1
100017           2
100020           2

我的目标是获得这样的结果:

SalespersonNo   'CarsSold'
100001           3
100003           1
100004           3
100005           1
100011           2
100015           1
100017           2
100020           1

1 个答案:

答案 0 :(得分:0)

您可能要使用条件聚合:

SELECT SalespersonNo,
   COUNT(SalespersonNo) AS [CarsSoldTotal],
   COUNT(CASE WHEN DateSold > DATEADD(mm, -6, GETDATE()) THEN 1 END) AS [CarsSold6Month]
FROM CarForSale
WHERE DateSold > '01/08/2018'
GROUP BY SalespersonNo;