OrderNo                      GoodsName                                 Status    Type
-------------------------------------------------------------------------------------------
20110930032821062849 【十全十美超值抢购】莱克豆浆机KA-SM1205 1 1
20110930032821062849 【十全十美超值抢购】莱克豆浆机KA-SM1205 1 2
20110930033036531341 美超值抢购莱克豆浆机KA-SM1205 1 1
20110930033713468285 【十全十美超值抢购】莱克豆浆机KA-SM1205 1 1
20110930035138484514 【十全十美超值抢购】莱克豆浆机KA-SM1205 1 1
20110930044746140284 【十全十美超值抢购】莱克豆浆机KA-SM1205 1 1上面是表数据,我想取出每个OrderNo的第一条数据不知道要怎么写,谢谢!

解决方案 »

  1.   


    --没排序字段么?第一条是按type排的么?是的话如下:
    select * from tb a where not exists(
    select 1 from tb where OrderNo=a.OrderNo and type>a.type
    )
    --不是的话
    ;with cte as(
    select rid=row_number() over (partition by OrderNo order by OrderNo),* from tb
    )
    select OrderNo,GoodsName,Status,Type from tb where rid=1
      

  2.   

    按type最小的当作第一条的话第一种写法里最后的大于号改下小于号
    总之,具体的自己根据上面思路更改即可
      

  3.   

    每个OrderNo的第一条数据?
    怎么讲?