Re: [SQL ] 計算次數 連續30天內只能算一次

看板Database (資料庫)作者 (可愛小孩子)時間7年前 (2017/03/28 01:14), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/2 (看更多)
附上 MSSQL 解法(應該跟 db2 大同小異): -- 測資部份(紅色是我新增的部份) select * into #t from ( select cast('2010-01-04' as datetime) as date union all select '2009-12-21' union all select '2009-12-18' union all select '2009-12-18' union all select '2009-11-16' union all select '2009-10-31' union all select '2009-10-16' union all select '2009-09-15' ) t1 -- 遞迴處理 ;with tb1 as ( select dateadd(day,-30,max(date)) as beginDate, max(date) as endDate, cast(1 as bigint) as num from #t union all select dateadd(day,-30,t1.date), t1.date, row_number() over (order by t1.date desc) from #t t1 inner join tb1 t2 on t2.num = 1 and t1.date < t2.beginDate ) -- 運算結果 select endDate from tb1 where num = 1 drop table #t ※ 引述《atm (Against the current)》之銘言: : 資料庫名稱: db2 : 內容/問題描述:從最後一筆計算次數 30天內都算同一次 : 以下面例子來說 最後一筆2010-01-04往前推30天:2009-12-05 : 所以在2009-12-05~2010-01-04這段期間發生的資料當做一筆 : 依此類推 2009-11-16 和2009-10-31這兩筆記錄也只當做一筆 : 故計算結果=2 試著用遞迴結果沒有成功...請問該如何得到答案? : date : 2010-01-04 : 2009-12-21 : 2009-12-18 : 2009-12-18 : 2009-11-16 : 2009-10-31 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.120.126 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1490634861.A.010.html

03/29 22:31, , 1F
thank you !
03/29 22:31, 1F
文章代碼(AID): #1OsKXj0G (Database)
文章代碼(AID): #1OsKXj0G (Database)