例如,我想计算年初至今的数据(从1月1日到今天-1),因为今天是14-11-22,所以它将从01-01-22开始计数,直到13-11-22。
下面是我的疑问:
SELECT COUNT(CASE WHEN
DATEPART(Year, booking_date ) = Datepart(Year, GETDATE()) AND
DATEPART(Month, booking_date ) <= DATEPART(Month, Getdate()) AND
DATEPART(Day, booking_date ) < DATEPART(Day, Getdate()) THEN
booking_date END) as "YearToDate"
FROM booking_table
为了仔细检查结果,我创建了一个不同的查询,使用WHERE筛选器对数据进行计数:
SELECT count(booking_date)
FROM prod.booking_table
WHERE booking_date >= '2022-01-01 00:00:00.000000'
AND booking_date < '2022-11-14 00:00:00.000000'
不幸的是,这些查询产生的结果有很大的不同。我相信我的查询逻辑是正确的,但我不确定计算中缺少了哪一部分数据。
任何帮助将不胜感激,谢谢!
1条答案
按热度按时间juzqafwq1#
如果今天是1号,你的情况
将每天过滤掉,与月份无关。
如果月份相同(否则,日期无关紧要),您只需要按天过滤,例如,您可以使用
尽管如此,我还是建议您使用第二个查询。