据我所知,我有以下两个查询应该产生相同的结果,但它们实际上产生了截然不同的数字。为什么“之间”日期与指定这些日期的月份和年份不同? 可能是什么原因造成的?
SELECT [Account]
, SUM([Amount]) AS [Amount]
FROM [Table]
WHERE [Account] = 'Specific Account'
AND Month([Date]) = 5
AND Year([Date]) = 2015
GROUP BY [Account]
总和结果:-1,500,000
SELECT [Account]
, SUM([Amount]) AS [Amount]
FROM [Table]
WHERE [Account] = 'Specific Account'
AND [Date] BETWEEN '2015-05-01' AND '2015-05-31'
GROUP BY [Account]
总结果:350,000
我需要第一个查询正确,因为我需要按月和年对结果进行分组,这使用第二个查询会很麻烦。
我最终需要的查询:
SELECT [Account]
, Month([Date]) AS [Month]
, Year([Date]) AS [Year]
, SUM([Amount]) AS [Amount]
FROM [Table]
GROUP BY [Account]
, Month([Date])
, Year([Date])
最佳答案
[Date] BETWEEN '2015-05-01' AND '2015-05-31'
将仅包含 31 日的行,其中时间部分为午夜,并忽略当天的其余时间。
您应该忘记 BETWEEN
,因为没有可以放在右侧的有效字符串文字,可以正确处理 datetime
、smalldatetime
,datetime2(0)..datetime2(7)
并使用
WHERE [Date] >= '2015-05-01' AND [Date] < '2015-06-01'
关于t-sql - 2 个应该相同的 T-SQL 查询却没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31682780/