[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