我想取4月16到4月20這個時間范圍內的資料,按日期分開。
目前sql是這樣寫的:select sum(sl)AS'sl',riqi from biao where riqi>='2020-04-16' AND riqi<='2020-04-20' group by riqi
回傳結果是:
sl riqi
10 20200416
16 20200417
19 20200419
但是我想要這種結果,當天啥也沒有的話數量為0 ,sql該怎么寫?
sl riqi
10 20200416
16 20200417
0 20200418
19 20200419
0 20200420
uj5u.com熱心網友回復:
嵌套啊select * from (select * from 日期表 where 日期 between datefmd and ateto)a
left join
(select sum(sl)AS'sl',riqi from biao where riqi between '2020-04-16' AND '2020-04-20' group by riqi)b on a.日期=b.riqi
uj5u.com熱心網友回復:
時序統計里面的“下采樣 補0”如果是opentsdl這樣的時序資料庫直接寫下采樣規則就好
如果是傳統關系資料庫
建議寫成CTE或存盤程序
非要折騰成一條陳述句,那屬于奇技淫巧范圍,可以討論,但不推薦。
比如
SELECT
x = ROW_NUMBER() OVER
(ORDER BY s1.[object_id])
FROM sys.objects AS s1
這樣的陳述句我們能產生一個1,2,3,4這樣的序列,在配合時間函式我們能自動產生 1樓的 日期表。
但是還是那句話,那屬于奇技淫巧范圍,可以討論,但不推薦
uj5u.com熱心網友回復:
master..spt_values 利用這個玩意其實也可以,但是和sys.objects一樣,長度有限無限其實也行,多高倆笛卡爾積就行
不過俺們可以當一個問題討論,但不建議你們把這些當寶貝記著
uj5u.com熱心網友回復:
這個完全可以在后端代碼里判斷下那一天資料是不是為空。要是寫在sql里看需求可以整一些固定得寫法,比如建一個表存放一年得日期,然后關聯下uj5u.com熱心網友回復:
動態行轉列。資料中心顯示的 Null,你可以直接通過 isnull(欄位,0)顯示
https://blog.csdn.net/hanjun0612/article/details/56673854
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/43111.html
標籤:C#
