sql - 同一列中最大日期和最小日期之间的值之间的差异?

标签 sql sql-server t-sql

需要有关 MS SQL 查询的帮助。我需要显示同一列中两个值之间的差异,其中数据位于最大日期和最小日期之间。例如,如果我有下表:

see details behind the image

location|   date        |amount
------- |   -------     |-------
1000    |   2016-01-01  |400
1000    |   2016-01-04  |600    
1000    |   2016-01-05  |650
1000    |   2016-01-06  |820
1000    |   2016-01-18  |850
1000    |   2016-01-22  |900
1000    |   2016-01-28  |910
1000    |   2016-01-31  |950
2000    |   2016-01-07  |100
2000    |   2016-01-13  |150
2000    |   2016-01-15  |260
2000    |   2016-01-20  |330

输出应如下所示:

location|   difference
------- |   -------
1000    |   550
2000    |   230

提前致谢。

最佳答案

您可以如下:

SELECT
   location,
   MAX(Amount) - MIN(Amount) difference
FROM
  Tbl
GROUP BY
  location

已更新

SELECT
    T.location,
    Maxv.Amount - Minv.Amount as difference
FROM
(
    SELECT
       location,
       MIN(date) MinDate,
       MAX(date) MaxDate
    FROM
      Tbl A 
    GROUP BY
      location
) T INNER JOIN 
Tbl Minv ON T.MinDate = Minv.date AND T.location = Minv.location INNER JOIN 
Tbl Maxv ON T.MaxDate= Maxv.date AND T.location = Maxv.location

关于sql - 同一列中最大日期和最小日期之间的值之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40299086/

相关文章:

sql-server - 根据行数之和检索特定行数

sql - 如何在 BigQuery 中查找数组中的元素

sql-server - 为 MSSQL 启动 Docker Image 而不是创建容器

sql-server - 只获取列数据的数字部分?

sql - 给定一个特定用户,我想找到至少具有该特定用户所具有的所有角色的所有用户

sql - 列出全部或指定值 - SSRS 参数

sql - 从所有行中选择时如何选择数据库中每条记录的前 6 条记录

mysql - 按最高值排序行

sql - 自动计算非标准自增

mysql - 如何选择具有相同 ID 共享一组值的行?