台灣最大程式設計社群網站
線上人數
873
 
會員總數:245217
討論主題:189089
歡迎您免費加入會員
討論區列表 >> MS SQL >> 請問一個SQL Select的方法
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問一個SQL Select的方法
價值 : 10 QP  點閱數:147 回應數:1

樓主

永遠的初心者
初學者
136 196
2130 224
發送站內信

各位大大好,我有個Table,記錄方法如下

table
name Action     XXX欄位 time 
小明 start          2019/11/05 13:11:00
小明 A(※名稱不定)  GO   2019/11/05 13:11:10
小明 B(※名稱不定)  xxx   2019/11/05 13:11:20
小明 C(※名稱不定)  OK   2019/11/05 13:11:30
小明 end           2019/11/05 13:11:42
小明 start          2019/11/05 13:11:15
小明 C(※名稱不定)  GO   2019/11/05 13:13:00
小明 end           2019/11/05 13:13:30
小明 end           2019/11/05 13:14:30
小強 start          2019/11/05 14:11:00
小強 A(※名稱不定)  GO   2019/11/05 14:11:10
小強 B(※名稱不定)  xxx   2019/11/05 14:11:20
小強 C(※名稱不定)  OK   2019/11/05 14:11:30
小強 end           2019/11/05 14:11:40

想改成這樣顯示
名稱 開始時間(Action為start) 結束時間(Action為End) 是否通關 花費時間
小明 2019/11/05 13:11:00   2019/11/05 13:11:42  有    42s
小明 2019/11/05 13:11:15   2019/11/05 13:13:30  無    30s
小明               2019/11/05 13:14:30  無    0s
小強 2019/11/05 14:11:00   2019/11/05 14:11:40  有    40s

判斷部分跟注意部分
是否通關:判斷同個人XXX欄位須在Start跟END間有GO跟OK記錄者為通關
花費時間:判斷同個人Action欄位須在Start跟END間的時間差(※name可能有穿插,如小明start後有小強start才又出現小明end)
有可能有GO,但不一定有OK
Actin 有可能出現只有End沒Start(如上面資料小明最後顯示這樣)

請問這有辦法直接單靠Select方法取出來嗎?
還是只能先全取出來再利用迴圈跑一遍重編List資料比較快?
我一直測case when半天都無法達到這樣的Select

請求高手大大幫忙指點,感謝

搜尋相關Tags的文章: [ SQL ] , [ Select ] ,
本篇文章發表於2019-11-04 17:55
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
給你一個方向,再來就要靠你自己實驗:


建議這種統計報表,每日統計前一天的資料並跑一次 ETL 至 Report DB。
本篇文章回覆於2019-11-11 22:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.