看板 Database 關於我們 聯絡資訊
https://imgur.com/a/pAFmK4s -- 測資 ;with tb1 as ( select * from( values ('A','08:00:00','08:20:00'), ('B','08:15:00','08:23:00'), ('C','08:21:00','08:26:00'), ('D','08:30:00','08:32:00'), ('E','08:33:00','08:52:00'), ('F','08:39:00','08:42:00'), ('G','08:45:00','08:49:00') )t(id,st,et) ), -- 取出斷點資料 tb2 as ( select * from tb1 t1 where not exists ( select * from tb1 where st <= t1.et and et > t1.et ) ), -- 取得大於等於自己的斷點 tb3 as ( select t1.st,t2.et,cnt = count(*) over (partition by t1.id) from tb1 t1 inner join tb2 t2 on t1.et <= t2.et ) -- 結果 select st = min(st),et=min(et) from tb3 group by cnt order by st ※ 引述《howard7821 (howard7821)》之銘言: : 標題可能不是很清楚我想表達的 : 目前有個需求是想要計算業務的總通話時長 : 但一個業務同時間可能會與很多客戶對話 : 舉例來說 : 客戶 開始對話時間 結束對話時間 : A 08:00:00 08:20:00 : B 08:15:00 08:23:00 : C 08:21:00 08:26:00 : D 08:30:00 08:32:00 : E 08:33:00 08:52:00 : F 08:39:00 08:42:00 : G 08:45:00 08:49:00 : 以上就是這業務與客戶的對話時間表 : 然後想整理成以下資訊 : 1 08:00:00 08:26:00 : 2 08:30:00 08:32:00 : 3 08:33:00 08:52:00 : 也就是對話時間有連貫就合成一筆資料 : 求大神幫小弟解答一下 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.26.106.46 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1576222406.A.CDB.html
howard7821: 感謝解答! 12/13 18:16