第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

生成一系列日期

生成一系列日期

倚天杖 2019-09-03 19:27:36
mysql在給定范圍內(nèi)生成一系列日期的最佳方法是什么?我想到的應用程序是編寫一個報表查詢,為每個日期返回一行,無論是否有任何數(shù)據(jù)要報告。最簡單的形式:select dates.date, sum(sales.amount)from <series of dates between X and Y> datesleft join sales on date(sales.created) = dates.dategroup by 1我已經(jīng)嘗試創(chuàng)建一個包含大量日期的表,但這似乎是一個糟糕的解決方法。
查看完整描述

3 回答

?
不負相思意

TA貢獻1777條經(jīng)驗 獲得超10個贊

我認為擁有一張日歷表是個好主意; 您可以獲得大量的報告和查詢功能,尤其是在填充稀疏數(shù)據(jù)范圍時。



查看完整回答
反對 回復 2019-09-03
?
慕斯王

TA貢獻1864條經(jīng)驗 獲得超2個贊

如果你在像我這樣的情況下禁止創(chuàng)建臨時表,并且也不允許設置變量,但是你想生成一個特定時期的日期列表,比如當前年份做一些聚合,使用這個


select * from 

(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date from

 (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,

 (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,

 (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,

 (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,

 (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v

where gen_date between '2017-01-01' and '2017-12-31'


查看完整回答
反對 回復 2019-09-03
?
弒天下

TA貢獻1818條經(jīng)驗 獲得超8個贊

您可以使用變量生成日期系列:


Set @i:=0;

SELECT DATE(DATE_ADD(X, 

INTERVAL @i:=@i+1 DAY) ) AS datesSeries

FROM yourtable, (SELECT @i:=0) r

where @i < DATEDIFF(now(), date Y) 

;

不知道這是不是你嘗試過:)。


接下來使用上面生成的查詢作為表格來left join:


set @i:=0;


select

d.dates,

sum(s.amount) as TotalAmount

from(

SELECT DATE(DATE_ADD(X, 

INTERVAL @i:=@i+1 DAY) ) AS dateSeries

FROM Sales, (SELECT @i:=0) r

where @i < DATEDIFF(now(), date Y) 

) dates d 

left join Sales s

on Date(s.Created) = Date(d.dateSeries)

group by 1

;


查看完整回答
反對 回復 2019-09-03
  • 3 回答
  • 0 關(guān)注
  • 550 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號