0
在我的表中,我有一些條目 - 在表格的日期列 - 不會比2016-01-04(2016年1月4日)更舊。 現在我想進行一個查詢,它或多或少地計算具有特定日期值的行數,但我希望此查詢能夠返回表中不存在日期的0計數。包含來自cte的值,當它不匹配
我有這樣的:
with date_count as (select '2016-01-01'::date + CAST(offs || ' days' as
interval) as date from generate_series(0, 6, 1) AS offs) select
date_count.date, count(allocation_id) as packs_used from medicine_allocation,
date_count where site_id = 1 and allocation_id is not null and timestamp
between date_count.date and date_count.date + interval '1 days' group by
date_count.date order by date_count.date;
這無疑給了我在我的表的日期的一個很好的聚合視圖,但因爲沒有行從2016年1月4日之前,他們不會在結果顯示:
"2016-01-04 00:00:00";1
"2016-01-05 00:00:00";2
"2016-01-06 00:00:00";4
"2016-01-07 00:00:00";3
我想這樣的:
"2016-01-01 00:00:00";0
"2016-01-02 00:00:00";0
"2016-01-03 00:00:00";0
"2016-01-04 00:00:00";1
"2016-01-05 00:00:00";2
"2016-01-06 00:00:00";4
"2016-01-07 00:00:00";3
我也試過在CTE右連接,但這種收益率相同的結果。我不能完全掌握如何做到這一點...有什麼幫助嗎?
最佳, 劍鋒
優秀!!非常感謝。我自己非常親密(用我的右連接),但是你的幫助使我免於很多挫折:)我可以問爲什麼不使用逗號,但只加入語法? –
@JanusEngstrøm。 。 。 'JOIN'語法更強大。沒有理由使用逗號(可以使用'CROSS JOIN'來代替)。大多數人發現邏輯更容易跟隨'JOIN'。 –