[SQL ] 在Group by中取得首筆資料

看板Database作者 (隱世的外來人Lv.1)時間6年前 (2017/07/24 18:50), 6年前編輯推噓3(301)
留言4則, 3人參與, 最新討論串1/3 (看更多)
資料庫名稱:MS SQL 資料庫版本:2012 內容/問題描述: 各位先進好 自己在公司專案的開發上碰到了查詢上的難題 如下圖範例所示 http://i.imgur.com/mL6ulEi.png
左邊是原始Insert的資料 中間是依照TYPE與DATE排序的結果 右邊為預期產出 用Group by能直接算出各TYPE的AMT和 但旁邊的DATE與VALUE就缺乏有效的取得方法 有試過用子查詢去抓 但因為實際筆數過大(可能有100,000)而速度緩慢 又或者讓結果去找原表,每筆0.1秒的話,6000筆就要10分鐘了 是否有更好解決的方法呢,求各位先進開示了 ----- Sent from JPTT on my Sony E6853. -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.90.178 ※ 文章網址: https://www.ptt.cc/bbs/Database/M.1500893438.A.412.html ※ 編輯: SangoGO (223.137.90.178), 07/24/2017 18:51:42

07/24 20:55, , 1F
子查詢+ row number應該可以做
07/24 20:55, 1F

07/24 22:36, , 2F
如果資料本身有id或是pk,是有一些hacker的作法
07/24 22:36, 2F

07/24 22:37, , 3F
我個人不喜歡用row_number,因為要重新排序又不能用索引
07/24 22:37, 3F

07/28 15:04, , 4F
type建index
07/28 15:04, 4F
文章代碼(AID): #1PTT3-GI (Database)
文章代碼(AID): #1PTT3-GI (Database)