2015-09-07 57 views
-2

我有表结构等,其中的LoanID为外键如何在同一列中的两个日期之间获得天数?

 
TranID LOANID  TRANSDATE 
2   2   2013-05-01  
13   2   2013-05-10  
14   2   2013-05-15  
6   5   2013-05-01 
7   5   2013-06-10  
8   5   2013-06-14 
9   5   2013-07-01  
10   5   2013-07-10 

我需要一个查询类似下面之间来计算天数。

 
TranID LOANID  TRANSDATE DAYS_BETWEEN 
2   2   2013-05-01 9 
13   2   2013-05-10 5 
14   2   2013-05-15 0 
6   5   2013-05-01 41 
7   5   2013-06-10 4 
8   5   2013-06-14 17 
9   5   2013-07-01 9 
10   5   2013-07-10 0 
+1

也许,您同意'2 2 2013-05-01 0 | 13 2 2013-05-10 9'? :) – splash58

回答

1

可能是自我连接,使用MIN获取下一个日期。

SELECT t1.tranid, 
     t1.loanid, 
     t1.transdate 
     DATEDIFF(IFNULL(MIN(t2.transdate), t1.transdate), t1.transdate) AS days 
FROM some_table t1 
LEFT OUTER JOIN some_table t2 
ON t1.loanid = t2.loan_id 
AND t1.transdate < t2.transdate 
GROUP BY t1.tranid, 
     t1.loanid, 
     t1.transdate 
+0

http://sqlfiddle.com/#!9/bb3cc/2所以,它更接近:) – splash58

+0

什么似乎不正确?唯一我能看到的是订单,但是你没有指定你需要的订单。 – Kickstart

+0

强制执行命令: - http://sqlfiddle.com/#!9/bb3cc/3 – Kickstart

相关问题