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

作者: SangoGO (隱世的外來人Lv.1)   2017-07-24 18:50:31
資料庫名稱:MS SQL
資料庫版本:2012
內容/問題描述:
各位先進好
自己在公司專案的開發上碰到了查詢上的難題
如下圖範例所示
http://i.imgur.com/mL6ulEi.png
左邊是原始Insert的資料
中間是依照TYPE與DATE排序的結果
右邊為預期產出
用Group by能直接算出各TYPE的AMT和
但旁邊的DATE與VALUE就缺乏有效的取得方法
有試過用子查詢去抓
但因為實際筆數過大(可能有100,000)而速度緩慢
又或者讓結果去找原表,每筆0.1秒的話,6000筆就要10分鐘了
是否有更好解決的方法呢,求各位先進開示了
作者: criky (2501-2)   2017-07-24 20:55:00
子查詢+ row number應該可以做
作者: lbeeon (力比恩)   2017-07-24 22:36:00
如果資料本身有id或是pk,是有一些hacker的作法我個人不喜歡用row_number,因為要重新排序又不能用索引
作者: clonk (咚)   2017-07-28 15:04:00
type建index

Links booklink

Contact Us: admin [ a t ] ucptt.com