我正在按年份和月份分组获取 2 个日期之间的数据。现在出于调试目的,我想从特定月份的组结果中获取检查数据,但我不知道该怎么做。
查询:
SELECT CAST(MONTH(ActiveDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ActiveDate) AS VARCHAR(4)) AS MyDate,
Count(*) AS Stats
FROM JobListings
where CompanyID = 100
and Status = 'Active'
and (ActiveDate >= '9/1/2020'
and ActiveDate <= '2/28/2021')
GROUP BY CAST(MONTH(ActiveDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ActiveDate) AS VARCHAR(4))
这给了我如下结果:
MyDate Stats
10-2020 3
11-2020 15
12 - 2020 4
and so on.
现在我想要的是获取“10-2020”的实际 3 条记录,那么如何注入父查询以从特定月份和年份的组结果集中获取实际数据?
答案 0 :(得分:1)
通过这个查询,这应该只返回 3 条记录:
SELECT *
FROM JobListings
where
CompanyID = 100
and Status = 'Active'
and ActiveDate >= '10/01/2020'
and ActiveDate <= '11/01/2020'
好吧,我在这里添加而不是评论,试试这个,看看它返回什么:
select *
, CAST(MONTH(ActiveDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ActiveDate) AS VARCHAR(4)) Mydate
from JobListings
where CAST(MONTH(ActiveDate) AS VARCHAR(2)) + '-' + CAST(YEAR(ActiveDate) AS VARCHAR(4)) = '10-2020'
答案 1 :(得分:1)
这里需要一个窗口聚合,而不需要 GROUP BY
。
另外,我建议您使用 EOMONTH
而不是像您那样拆分日期和投射。
SELECT
EOMONTH(ActiveDate),
Count(*) OVER (PARTITION BY EOMONTH(ActiveDate) AS Stats,
*
FROM JobListings
where
CompanyID = 100
and Status = 'Active'
and (ActiveDate >= '9/1/2020'
and ActiveDate <= '2/28/2021')