SQL语句来获取两个日期之间的差异
我有一个查询,基本上是按天对总金额进行分组SQL语句来获取两个日期之间的差异,sql,sql-server,group-by,difference,Sql,Sql Server,Group By,Difference,我有一个查询,基本上是按天对总金额进行分组 SELECT CountDate, SUM(Max_Count) as MaximumCount, SUM(Min_Count) as MinimumCount FROM countTable WHERE countId IN ('48', '34', '65', '63', '31', '64', '86') AND CountDate BETWEEN '2014-08-14' AND '2014-08-16' GROUP BY CountDat
SELECT CountDate, SUM(Max_Count) as MaximumCount, SUM(Min_Count) as MinimumCount
FROM countTable
WHERE countId IN ('48', '34', '65', '63', '31', '64', '86')
AND CountDate BETWEEN '2014-08-14' AND '2014-08-16'
GROUP BY CountDate
ORDER BY CountDate
输出结果将是
Date | Maximum | Minimum
------------|-----------|----------------------
2014-08-14 | 3018234 | 3014212
2014-08-15 | 3023049 | 3018510
2014-08-16 | 3026813 | 3023244
我希望查询得到最后一天的MaximumCount和第一天的MinimumCount之间的差值
查询结果应为最后一天的最大值,即2014-08-16:3026813减去(-)第一天的最小值,即2014-08-14 | 3014212。因此,3026813-3014212
非常感谢您对我的帮助。我认为这是正确的
SELECT
(SELECT [Maximum] FROM TABLE WHERE Date = (SELECT MAX(Date) FROM TABLE)) -
(SELECT [Minimum] FROM TABLE WHERE Date = (SELECT MIN(Date) FROM TABLE))
FROM TABLE
DECLARE @STARTDATE DATE = '2014-08-14'
DECLARE @ENDDATE DATE = '2014-08-16'
SELECT A.CountDate,
B.MaximumCount - A.MinimumCount
FROM (
SELECT CountDate,
SUM(Max_Count) AS MaximumCount,
SUM(Min_Count) AS MinimumCount,
FROM countTable
WHERE countId IN ('48','34','65','63','31','64','86')
AND CountDate BETWEEN @STARTDATE AND @ENDDATE
GROUP BY CountDate) A
LEFT JOIN (
SELECT DATEADD(DAY,CountDate,1) CountDate
SUM(Max_Count) AS MaximumCount,
SUM(Min_Count) AS MinimumCount,
FROM countTable
WHERE countId IN ('48','34','65','63','31','64','86')
AND CountDate BETWEEN BETWEEN @STARTDATE AND @ENDDATE
GROUP BY DATEADD(DAY,CountDate,1)) B
ON A.CountDate = B.CountDate
关于jithinshaji答案,我已经得到了这个查询的结果
DECLARE @STARTDATE DATE = '2014-08-14'
DECLARE @ENDDATE DATE = '2014-08-16'
DECLARE @NOOFDAYS INT = datediff(day, @STARTDATE, @ENDDATE)
SELECT A.CountDate,
A.MaximumCount - B.MinimumCount AS CountSum
FROM (
SELECT CountDate,
SUM(Max_Count) AS MaximumCount,
SUM(Min_Count) AS MinimumCount
FROM countTable
WHERE countId IN ('48','34','65','63','31','64','86')
AND CountDate BETWEEN @STARTDATE AND @ENDDATE
GROUP BY CountDate) A
LEFT JOIN (
SELECT DATEADD(DAY, @NOOFDAYS, CountDate) AS CountDate,
SUM(Max_Count) AS MaximumCount,
SUM(Min_Count) AS MinimumCount
FROM countTable
WHERE countId IN ('48','34','65','63','31','64','86')
AND CountDate BETWEEN @STARTDATE AND @ENDDATE
GROUP BY DATEADD(DAY, @NOOFDAYS, CountDate)) B
ON A.CountDate = B.CountDate
这个单一的计算结果是如何呈现的?(即,包含此新计算时的预期输出是什么?)我只需要一个计算结果基本上我只想显示最后一天的最大值与第一天的最小值之差的结果您使用的是什么版本的数据库?谢谢您的回答。我可以在第一个查询中这样做吗?即,我只有一个查询可以获得结果谢谢你的回答,但是这个查询给出的结果不是我想要的结果。查询结果应为最后一天的最大值,即2014-08-16:3026813减去(-)第一天的最小值,即2014-08-14 | 3014212。因此,3026813-3014212