如何在共享另一列相同值的两行之间比较列值?

时间:2018-07-16 17:14:51

标签: sql

我有一个包含以下列的表:

name, start_date, end_date

在表中,有许多行共享相同的名称。例如,表中可以同时存在[John Smith,10/17/17,12/17/17]和[John Smith,01/17/18,02/17/18]。我想给的名字,找到最早的开始日期和最晚的结束日期,并获取这两个值之间的差并将其显示为一列。

对于上面的示例,select语句应返回以下内容:

[名称,以星期为单位的日期差],在这种情况下,日期差为02/17/18-10/17/17

3 个答案:

答案 0 :(得分:0)

您需要按名称对行进行分组:

SELECT name, max(end_date) - min(start_date)
FROM table
GROUP BY name

答案 1 :(得分:0)

不确定使用的是哪种DBMS,但是如果是SQL Server,并且希望在几周内有所不同,则可以编写以下内容

SELECT name
     , [Date difference in weeks] = DATEDIFF(week, min(start_date), max(end_date))
FROM table
GROUP BY name

答案 2 :(得分:0)

尝试使用以下查询。

    select name, max(end_date)-min(start_date)
    from table
    group by name;