簡體   English   中英

Postgres復雜的SQL查詢

[英]Postgres complicated SQL query

我正在嘗試通過Postgres創建查詢。 我有一張這樣的桌子:

Date----------|Meter-----|------period-----|-----value
2017-05-23-----meter1  ---------- 1 ------------ 2.01
2017-05-23-----meter1  ---------- 3 ------------ 4.01
2017-05-23-----meter1  ---------- 4 ------------ 0.00

該表代表儀表讀數。 每天需要有48倍的儀表讀數。 但是有時由於某種原因可能無法讀取電表讀數,因此不會有記錄。 此外,儀表讀數可能為0.00。

我需要做的是生成一個序列,如果我在特定日期搜索任何給定電表的電表讀數,將會給我類似的東西:

Period----Total
1     ---   2.01
2     ---   null
3     ---   4.01
4     ---   0.00
.
.
.

即使沒有記錄,它也需要給我48個讀數。 我正在嘗試從JSON響應填充Google圖,並且該圖接受null值,但不接受“ no”值。

感謝您的幫助。

您可以使用generate_series生成數字列表,然后將表left join在該列表上,並將缺失的期間顯示為null

select g.val,t.value
from generate_series(1,48) g(val)
left join tbl on t.period=g.val and t.date = '2017-05-23' --change this value as required 

如果您需要表格中的所有日期和計量表,則將日期和計量表cross join生成的期間,然后將表格與之left join

select dm.date,dm.meter,g.val,t.value
from generate_series(1,48) g(val)
cross join (select distinct date,meter from t) dm
left join t on t.period=g.val and t.date=dm.date and t.meter=dm.meter
where dm.date = date '2017-05-23' --change this value as required
and dm.meter='meter1' --change this value as required

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM