SQL - 如何通过比较当前行与第一行来计算天数?
SQL - How can I count days by comparing current row to the 1st row?
我在数据库中有一个如下所示的 table,我怎样才能写一个 SQL 来显示预期的结果?
- first_date:table ORDER BY order_date ASC
上的第一个 order_date
- days_to_date: (order_date - first_date) 天数
我的table:
id | order_date | order_ref
---+------------------------
1 | 2015-03-01 | BC101
2 | 2015-03-01 | BC102
3 | 2015-03-02 | BC103
4 | 2015-03-03 | BC104
预期结果:
id | order_date | first_date | days_to_date
---+------------+------------+-------------
1 | 2015-03-01 | 2015-03-01 | 0
2 | 2015-03-01 | 2015-03-01 | 0
3 | 2015-03-02 | 2015-03-01 | 1
4 | 2015-03-03 | 2015-03-01 | 2
其他说明:
- 我正在使用 HSQLDB 2.0.0,但如果可能的话,我更愿意解决在一般情况下在每一行显示 first_date 的问题
提前致谢
尝试
select id, order_date,
(select min(order_date) from your_table) as first_date,
datediff('day', (select min(order_date) from your_table), order_date) as days_to_date
from your_table
order by order_date
我在数据库中有一个如下所示的 table,我怎样才能写一个 SQL 来显示预期的结果?
- first_date:table ORDER BY order_date ASC 上的第一个 order_date
- days_to_date: (order_date - first_date) 天数
我的table:
id | order_date | order_ref
---+------------------------
1 | 2015-03-01 | BC101
2 | 2015-03-01 | BC102
3 | 2015-03-02 | BC103
4 | 2015-03-03 | BC104
预期结果:
id | order_date | first_date | days_to_date
---+------------+------------+-------------
1 | 2015-03-01 | 2015-03-01 | 0
2 | 2015-03-01 | 2015-03-01 | 0
3 | 2015-03-02 | 2015-03-01 | 1
4 | 2015-03-03 | 2015-03-01 | 2
其他说明:
- 我正在使用 HSQLDB 2.0.0,但如果可能的话,我更愿意解决在一般情况下在每一行显示 first_date 的问题
提前致谢
尝试
select id, order_date,
(select min(order_date) from your_table) as first_date,
datediff('day', (select min(order_date) from your_table), order_date) as days_to_date
from your_table
order by order_date