2017-03-02 3 views
0

현재 문제가 발생했습니다. 우리는 한 순간에서 다른 순간 사이의 변화를 볼 수있는 보고서를 작성하려고합니다. 예를 들어, 작은 예제는 보고서가 6 개월 전에 성을, 오늘에 성을 생성하기를 원할 것입니다.Oracle SQL - 데이터베이스 변경 쿼리

나를 위해이 작업을 수행 할 수있는 SQL 표현식이 있습니까? (예 : 6 개월 전의 데이터 인 첫 번째 성 이름 열에 SQL 날짜 매개 변수 추가).

+0

샘플을 제공하세요 데이터 및 예상 결과가 명확하게 나타납니다. – GurV

+0

"데이터베이스"(의미가 무엇이든)는 과거 정보 또는 현재 정보 만 저장합니까? 즉, "employees"라는 테이블이 있고 한 컬럼이 "last_name"인 경우 -이 테이블에 "effective_date"컬럼이 있고 'UPDATE'대신 테이블에 'INSERT'만 있습니까? 이는 보고서에 과거 정보가 필요할 경우 정보를 저장하는 표준 방법입니다. – mathguy

+0

응답이 과거 데이터를 저장하는 방법에 따라 결정되므로 질문이 너무 광범위하다고 표시했습니다. 충분한 정보를 제공하지 않았으므로 아무도 답변을 드릴 수 없습니다. –

답변

1

을 사용하여 주셔서 감사합니다 flashback query (당신은 데이터베이스가 첫 번째를 지원하도록 설정되어 있는지 확인해야하고 데이터를 6 개월 처리하기에 충분한 플래시백 유지가됩니다) :

SELECT COALESCE(current.id, previous.id) AS id, 
     current.name AS current_name, 
     previous.name AS name_six_months_ago 
FROM table_name current 
     FULL OUTER JOIN 
     (
     SELECT id, name 
     FROM table_name 
     AS OF TIMESTAMP (ADD_MONTHS(SYSTIMESTAMP, -6)) 
     ) previous 
     ON (current.id = previous.id);