Cho hai bảng:
CREATE TABLE foo (ts timestamp, foo text);
CREATE TABLE bar (ts timestamp, bar text);
Tôi muốn viết một truy vấn mà trở về giá trị cho ts
, foo
và bar
đại diện cho một cái nhìn thống nhất của các giá trị gần đây nhất. Nói cách khác, nếu foo
có:
ts | foo
--------
1 | A
7 | B
và bar
chứa:
ts | bar
--------
3 | C
5 | D
9 | E
Tôi muốn một truy vấn trả về:
ts | foo | bar
--------------
1 | A | null
3 | A | C
5 | A | D
7 | B | D
9 | B | E
Nếu cả hai bảng có một sự kiện cùng một lúc, thứ tự không thành vấn đề.
Tôi đã có thể tạo cấu trúc cần thiết bằng cách sử dụng các giá trị hợp nhất và giả:
SELECT ts, foo, null as bar FROM foo
UNION ALL SELECT ts, null as foo, bar FROM bar
sẽ cung cấp cho tôi dòng thời gian tuyến tính của các giá trị mới, nhưng tôi không thể tìm ra cách điền các giá trị null dựa trên các hàng trước đó. Tôi đã thử lag
chức năng cửa sổ, nhưng AFAICT nó sẽ chỉ nhìn vào hàng trước, không được đệ quy ngược. Tôi đã xem xét các CTE đệ quy, nhưng tôi không chắc chắn làm thế nào để thiết lập các điều kiện bắt đầu và chấm dứt.
foo
vàbar
tăng dần theo thời gian hoặc là trường hợp thử nghiệm sai lệch về mặt này?