0
我想從具有id和2個JSONB列的BD中獲取指定日期之前的最後一個給定值(在本例中爲2015-09-30)像這樣:在JSONB列的特定日期之前給出的最後一個值
1,
[
{"value": 4290, "time": "2014-05-15T05:31:45.077483Z"},
{"value": 3490, "time": "2014-09-02T04:32:32.094733Z"},
{"value": 3690, "time": "2015-01-16T04:32:28.679849Z"}, etc...
],
[
{"stock_status": "instock", "time": "2014-06-15T05:31:45.077483Z"},
{"stock_status": "outofstock", "time": "2014-07-02T04:32:32.094733Z"},
{"stock_status": "instock", "time": "2015-01-26T04:32:28.679849Z"}, etc...
],
2,
[
{"value": 4598, "time": "2013-05-15T05:31:45.077483Z"},
{"value": 3456, "time": "2014-04-02T04:32:32.094733Z"},
{"value": 4354, "time": "2015-06-16T04:32:28.679849Z"}, etc...
]
[
{"stock_status": "outofstock", "time": "2014-06-15T05:31:45.077483Z"},
{"stock_status": "instock", "time": "2014-07-02T04:32:32.094733Z"},
{"stock_status": "outofstock", "time": "2015-01-26T04:32:28.679849Z"}, etc...
]
我以後的查詢應該給;
- 編號 日期前
- 首先值
- 如果前日期=「使用inStock」第一stock_status
但我不能得到正確的時間戳,它給前後面的所有值日期如果stock_status是「instock」。我的查詢:
SELECT sph.id, elem1->>'value', elem1->>'time'
FROM table as sph,
jsonb_array_elements(sph.value_column) as array1(elem1),
jsonb_array_elements(sph.stock_status_coulmn) as array2(elem2)
where elem1 = (select elem1
where elem1->> 'time' <= '2015-09-30' and elem2->> 'time' <= '2015-09-30' and elem2->>'stock_status' = 'instock'
order by elem1->>'time' desc
limit 1);
我想這給我只有一個結果從上面的DB-爲例回來,一個ID爲1
任何提示嗎?這已經掘進了我一對夫婦現在幾天的瘋狂......
你是什麼意思,一半是前半和後半。 –
@FahadAnjum我的意思是,一半的結果是正確的最後一個日期,一半是第一個日期,例如,如果jsonb是[[「值」:4290,「時間」:「2014-05-15T05:31: 45.077483Z「}, {」value「:3490,」time「:」2014-09-02T04:32:32.094733Z「}]'另一個是[[{」value「:3490,」time「:」2014 -09-02T04:32:32.094733Z「}, {」value「:3690,」time「:」2015-01-16T04:32:28.679849Z「}]'結果是'」2014-09-02T04: 32:32.094733Z「'(right)and'」2014-09-02T04:32:32.094733Z「'(錯誤的,應該是」2015-01-16T04:32:28.679849Z「)。 – Elmseld