第一个日期和其余日期之间的日期差异

Date difference between the first date and rest of the dates

我有一个 table 带有日期列,如下所示

|Date      |
|----------|
|2019-01-11|
|2019-01-12|
|2019-01-13|
|2019-01-14|
|2019-01-15|

输出

|Date      |Difference|
|----------|----------|
|2019-01-11|    0     |
|2019-01-12|    1     |
|2019-01-13|    2     |
|2019-01-14|    3     |
|2019-01-15|    4     |

任何人都可以帮助或建议实现此目标的方法。

如果你想要每行最小日期的差异,你可以做一个window min():

select date, datediff(day, min(date) over(), date) difference
from mytable
order by date

这看起来像 row_number():

select output,
       row_number() over (order by date) - 1 as difference
from t;

如果你想和最早的不一样:

select output,
       datediff(day, min(date) over (), date)
from t;