假設表格如下:如何在Postgres查詢中填充時間戳空白?
CREATE TABLE channel1m (
ts TIMESTAMP WITHOUT TIME ZONE NOT NULL,
itemId BIGINT,
value BIGINT
)
在其中一排可以被插入每個分鐘,每的itemId,如下所示:
ts itemId value
2012-12-03 15:29:00 100 1
2012-12-03 15:30:00 100 2
2012-12-03 15:30:00 101 0
2012-12-03 15:32:00 100 1
2012-12-03 15:32:00 101 1
我不能找到一種方法(無創建額外的表格)通過返回NULL
的值來編寫填充時間間隔的查詢(例如,15:21:00爲itemId 101,15:31:00爲兩個項目)。
預期的結果集是:
ts itemId value
2012-12-03 15:29:00 100 1
2012-12-03 15:29:00 101 NULL
2012-12-03 15:30:00 100 2
2012-12-03 15:30:00 101 0
2012-12-03 15:31:00 100 NULL
2012-12-03 15:31:00 101 NULL
2012-12-03 15:32:00 100 1
2012-12-03 15:32:00 101 1
我發現有時間戳的全系列獨立時間表的解決方案,但我更希望在查詢獨自解決這個問題。這可能嗎?
左加入日曆表,可以通過generate_series(min(ts),max(ts))生成 – wildplasser
@wildplasser:你應該做出答案。 –
我正在研究它......包括(嵌套!)CTE – wildplasser