我有一个包含以下列的表:
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
答案 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;