sql - 함수 - oracle 시간 차이 계산



다른 행과 열의 값 사이의 차이 계산 (1)

아래의 쿼리를 해결해주십시오. 데이터가 3 행인 Data : Date1, Date2 및 방문 창과 같은 테이블 이름이 있다고 가정합니다. 방문 창 값을 계산해야합니다. 날짜 1의 (n + 1) 번째 행과 날짜 2의 n 번째 행의 차이 여야합니다. 예 : Date1의 두 번째 행 값과 date2 값의 첫 번째 행의 차이를 7로 나눈 값의 차이.

Table: Data
------------
Date1           Date2           VW
13-DEC-2011     15-DEC-2011     ?   
18-DEC-2011     16-DEC-2011     ?
21-DEC-2011     24-DEC-2011     ?

감사


select
  Date1, 
  Date2,
  lead(Date1) over (order by Date1) next_date1,
  ((lead(Date1) over (order by Date1)) - Date2)/7 as Diff
From DATA_TABLE

마지막 행에는 n + 1 Date1이 없기 때문에 VW를 얻지 못합니다.

lead(column) 함수는 over 절에 지정된대로 다음 행의 column 매개 변수에 대한 값을 리턴합니다.

여기에서 예제와 기타 유사한 기능을 찾을 수 있습니다.

UPDATE (질문 주석에 대한 응답 - 다른 열과 비교하는 방법)

select 
  Date1,
  Date2,
  Diff,
  another_column,
  CASE 
    when Diff < another_column then 'it is lower'
    when Diff > another_column then 'it is higher'
    when Diff = another_column then 'are equal'
  END as comparation,
  CASE
    when round(diff -another_column,3) = 0 then 'almost equal'
    else 'definitely not equal'
  END as rounded_comparation
from(
    select
      Date1, 
      Date2,
      lead(Date1) over (order by Date1) next_date1,
      ((lead(Date1) over (order by Date1)) - Date2)/7 as Diff,
      another_column
    From DATA_TABLE
)




oracle11g