2015-10-14 91 views
0

我有一個表,如下在數據庫中,我該怎麼寫SQL顯示預期的結果?SQL - 我怎麼能算天當前行比較於1行?

  • FIRST_DATE:上表的順序第一order_date進行按ORDER_DATE ASC
  • days_to_date:(order_date的 - FIRST_DATE)天

我的表數:

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的問題,如果可能的話

在此先感謝

+0

我覺得這是低效的。一個更好的解決辦法是計算它,當你插入並將其存儲在一個單獨的列,假設第一次約會從不改變。 – duffymo

回答

1

嘗試

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 
+0

太棒了!選擇分鐘(order_date的)解決了這個問題:d – Max

+1

見,性能明智的,它是更好地得到最小(order_date的)的一個變量,然後在SELECT語句中使用這個變量。 –

+0

@OSAMAORABI:你怎麼知道的?如果優化器工作良好,則在一個查詢中執行操作可能會更快。 –