【发布时间】:2020-01-05 06:57:32
【问题描述】:
我有一张这样的表格:
Name | date_from | date_to | age
------+------------+------------+-----
Alice | 01.12.2004 | 03.04.2008 | 35
Bob | 04.02.2013 | 04.11.2014 | 43
我想制作一个表格,将每一行分成一年的间隔
date_from 和 date_to 列,保留 Name,并更新 age,如下所示:
Name | date_from | date_to | age
------+------------+------------+-----
Alice | 01.12.2004 | 01.12.2005 | 35
Alice | 01.12.2005 | 01.12.2006 | 36
Alice | 01.12.2006 | 01.12.2007 | 37
Alice | 01.12.2007 | 01.12.2008 | 38
Alice | 01.12.2008 | 03.04.2008 | 39
Bob | 04.02.2013 | 04.02.2014 | 43
Bob | 04.02.2014 | 04.11.2014 | 44
这可以在 SQL 中实现吗?
【问题讨论】:
-
你使用的是什么 sql(MS Sql、MySQL、Oracle、PostgreSQL)?
-
有一个返回所有可能年份的帮助表(或递归 cte)。加入。
-
好像少了一个爱丽丝 | 01.12.2008 | 03.04.2008 | 38(鲍勃也一样),或者鲍勃的第二行不应该在那里
-
@metal:你说得对,会更正
-
一个与方言无关的答案可能会被证明是困难的,因为日期函数是高度特定于供应商的。
标签: sql sql-server database tsql select