求助 假如日期是‘xxxx.xx.xx’的十字符varchar格式,如下圖,現希望以初始日期為起點,每隔一個月劃分一個組以統計每組gmv,請問該如何分組?
如果按substr(dt,1,7)的話分的是自然月,不是想要的結果。用dt+interval '1' month的話只能找出第一組,不知道怎么回圈
uj5u.com熱心網友回復:
既然不是自然月,那所謂的間隔一個月,是指多少天呢,統一都是30天。如果間隔天數固定,那就以每條記錄的日期減去最小日期的天數差,再除以固定的間隔天數的商來進行分組。uj5u.com熱心網友回復:
好方法,謝謝啦~uj5u.com熱心網友回復:
謝謝uj5u.com熱心網友回復:
建議做一個時間范圍表, 把所有的起始時間、結束時間都放在表里, 到時兩邊一關聯就出來了。uj5u.com熱心網友回復:
create table #t(dt smalldatetime,gmv int
)
insert into #t
select '2018/05/10','10' union all
select '2018/05/10','20' union all
select '2018/05/11','10' union all
select '2018/05/16','5' union all
select '2018/05/23','60' union all
select '2018/05/23','10' union all
select '2018/06/05','20' union all
select '2018/06/07','60' union all
select '2018/06/17','30' union all
select '2018/06/29','10' union all
select '2018/07/03','10' union all
select '2018/08/24','5' union all
select '2018/08/31','70' union all
select '2018/10/27','20' union all
select '2018/11/13','10' union all
select '2018/12/08','80'
---輸入一個日期 按輸入的日期每過30天進行分組匯總gmv欄位
declare @dt as smalldatetime
set @dt='2018/05/10'
select SUM(gmv) as gmv_count from(
select Datediff(dd,@dt,dt)/30 as px,* from #t) ta group by px
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/146838.html
標籤:疑難問題
下一篇:sql 怎么查日終余額平均值
