SQL SERVER 取出 一张表中的每个分组中 的第一条数据 ,第一条数据是按照某种排序规则进行排序取的第一条



  如题,方法很简单,只要一句话就可以解决:

SELECT * FROM (
SELECT  *,  ROW_NUMBER() OVER (PARTITION BY LineCode ORDER BY OnTime DESC) NewIndex
        FROM dbo.TPBOM  WHERE LineCode IN
   (SELECT LineCode FROM dbo.TShop) AND A.OnTime IS NOT NULL
    ) D WHERE D.NewIndex = 1 

----------------------------------------------------------------------------------------------------------

执行

SELECT  *,  ROW_NUMBER() OVER (PARTITION BY LineCode ORDER BY OnTime DESC) NewIndex
        FROM dbo.TPBOM  WHERE LineCode IN
    (SELECT LineCode FROM dbo.TShop) AND A.OnTime IS NOT NULL
     得到

结果集

FID             Barcode                OnTime                         LineCode  NewIndex
112784446332100010e          2013-10-14 13:25:00            L2           1

112784434332100010r          2013-10-14 13:13:30             L2           2

112784465332100010t          2013-10-14 12:13:00             L2           3

112784466332100010y          2013-10-14 11:25:00            L2           4


112784097 1221000100          2013-10-14 14:21:00           L4           1

.

.

.

取NewIndex = 1 即可得到要求的结果集

FID             Barcode                OnTime                         LineCode   NewIndex
112784446332100010e          2013-10-14 13:25:00         L2               1

1127840971221000100          2013-10-14 14:21:00         L4               1

.

.

.


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值