Re: [SQL ] 計算次數 連續30天內只能算一次
附上 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
03/29 22:31, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章