JC5*_*C59 5 sql oracle plsql access-vba
select * from TABLE1
where ENTRY_DATE >=trunc(sysdate-365)
ORDER BY ENTRY_TIME
Run Code Online (Sandbox Code Playgroud)
这给了我以下结果:
NUMBER_ID | ENTRY_DATE | ENTRY_TIME
----------+------------+------------
1 | 11/21/2014 | 11/21/2014 08:05:00 AM
2 | 11/21/2014 | 11/21/2014 08:08:46 AM
3 | 11/21/2014 | 11/21/2014 08:09:51 AM
4 | 11/21/2014 | 11/21/2014 08:10:05 AM
5 | 11/21/2014 | 11/21/2014 08:10:05 AM
6 | 11/21/2014 | 11/21/2014 08:10:59 AM
7 | 11/21/2014 | 11/21/2014 08:14:34 AM
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够通过SQL显示“差异”,其中“差异”列是一个条目和最后一个条目之间的时间差。
谁能帮忙将此添加到我的此SQL代码中?谢谢
您已指定多个RDBMS。对于oracle,一个简单的查询将是
SELECT e_id
, e_d - NVL(LAG ( e_d ) OVER ( ORDER BY e_d ), e_d) diff
FROM events
;
Run Code Online (Sandbox Code Playgroud)
假设events由创建一个基表
CREATE TABLE events ( e_id NUMBER PRIMARY KEY, e_d DATE );
Run Code Online (Sandbox Code Playgroud)
差异将以“天”为单位显示。
替代查询不使用该LAG函数,并且-仍以oracle语法表示-应该是可移植的:
SELECT e.e_id
, NVL ( e.e_d - elagged.e_d, 0 ) diff
FROM events e
LEFT JOIN events elagged ON ( elagged.e_id = e.e_id - 1 )
ORDER BY e.e_id
;
Run Code Online (Sandbox Code Playgroud)
该sqlfiddle包含完整的示例。