Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL语句来获取两个日期之间的差异_Sql_Sql Server_Group By_Difference - Fatal编程技术网

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