주어진 두 테이블 :
CREATE TABLE foo (ts timestamp, foo text);
CREATE TABLE bar (ts timestamp, bar text);
나는에 대한 반환 값이있는 쿼리를 작성하고자하는 ts
, foo
그리고 bar
그 가장 최근의 값에 대한 통합 뷰를 표시합니다. 즉, foo
포함 된 경우 :
ts | foo
--------
1 | A
7 | B
및 bar
포함 :
ts | bar
--------
3 | C
5 | D
9 | E
다음을 반환하는 쿼리를 원합니다.
ts | foo | bar
--------------
1 | A | null
3 | A | C
5 | A | D
7 | B | D
9 | B | E
두 테이블에 동시에 이벤트가 있으면 순서는 중요하지 않습니다.
나는 union all과 dummy 값을 사용하여 필요한 구조를 만들 수있었습니다.
SELECT ts, foo, null as bar FROM foo
UNION ALL SELECT ts, null as foo, bar FROM bar
새로운 값의 선형 타임 라인을 제공하지만 이전 행을 기반으로 null 값을 채우는 방법을 해결할 수는 없습니다. lag
창 기능을 시도 했지만 AFAICT는 이전 행만보고 재귀 적으로 뒤로 보지 않습니다. 재귀 CTE를 살펴 봤지만 시작 및 종료 조건을 설정하는 방법을 잘 모르겠습니다.
답변을받은 후 질문의 성격을 바꾸지 말고 새로운 질문을하십시오 . 언제든지 참조 용으로 연결할 수 있습니다. (있는 경우 자신의 답변을 제공 할 수도 있습니다.) 원본 버전은 일반 대중에게 흥미로울 것입니다. 한 번의 질문으로 많은 내용을 다루지 마십시오.
—
Erwin Brandstetter
foo
과bar
엄격하게 시간이 지남에 따라 상승 또는 테스트 케이스는이 점에 오해의 소지가있다?