[SQL ] cte 遞迴

作者: bernachom (Terry)   2016-02-21 10:30:27
資料庫名稱: sql server 2008 r2
資料庫版本: 2008 r2
內容/問題描述:
請教一下,
我有一個table是長這個樣子
useriD uID tDate startDate endDate seqNo
AAAA ZZ 2016-02-21 NULL NULL 1
BBBB ZZ 2016-02-25 NULL NULL 2
CCCC VV 2016-02-25 NULL NULL 3
我希望整理後最後的結果是
userID uID tDate startDate endDate seqNo
AAAA ZZ 2016-02-21 2016-02-21 2016-02-25 1
BBBB ZZ 2016-02-25 2016-02-25 NULL 2
CCCC VV 2016-02-25 2016-02-25 NULL 3
uID 、 userID、tDate 為key值
我要找出每一個uID的有效區間 (startDate, endDate)
如果uID只有一筆的時後,他就還沒有結束 endDate 就會是null
如果uid有兩筆以上的時後,次筆的tDate(產生uid時間),就會更新到目前這一筆的endDate
我用cte去跑,結果一直超出100筆
不知道是什麼條件沒有下好..
希望前輩能教導一下
然後我發燒了,好難過...唉,希望今天會好轉..
[更新]
(今天什麼事都做不了,燒得好厲害呀,唉...現在也還在咳)
剛才我用了簡單的更新就做完了,我搞得太複雜了
作者: bernachom (Terry)   2016-02-21 14:33:00
我是在想,如果要更新時間區間,在程式端做會不會比較好呢??CTE好像沒有什麼機會的樣子,我看看XML行不行...

Links booklink

Contact Us: admin [ a t ] ucptt.com