感谢各位大虾了:ID     数量    日期         型号
1     3       2011-1-10      1
2     6       2011-1-29      2
3     8       2011-1-13      1
4     3       2011-2-4       3
5     1       2011-3-13      2
6     8       2011-3-16      1
1、需要将额定数量的数据按照型号找出,并且按照先进先出原则(就是时间最早最先出)
比如:数量:10个,型号:1
那么找出的数据:ID     数量    日期         型号
1     3       2011-1-10      1
3     8       2011-1-13      1

解决方案 »

  1.   

    create table tb(ID int,数量 int,日期 datetime,型号 int)
    insert into tb select 1,3,'2011-1-10',1
    insert into tb select 2,6,'2011-1-29',2
    insert into tb select 3,8,'2011-1-13',1
    insert into tb select 4,3,'2011-2-4',3
    insert into tb select 5,1,'2011-3-13',2
    insert into tb select 6,8,'2011-3-16',1
    go
    --感觉用ID比较好.如果日期具有唯一性,下面的程序里将id换成日期
    select top 1 * into # from tb where 型号 =1 order by id
    while (select sum(数量) from #)<10
    insert into #
    select top 1 * from tb where 型号=1 and id not in(select id from #) order by idselect * from #
    /*
    ID          数量          日期                      型号
    ----------- ----------- ----------------------- -----------
    3           8           2011-01-13 00:00:00.000 1
    1           3           2011-01-10 00:00:00.000 1(2 行受影响)*/
    go
    drop table tb,#
      

  2.   

    艾玛,qianjin036a,真的好崇拜,我做了1天,出来一半结果,您就几分钟,晕倒我的sql 上有个错误:
    仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'#'中的标识列指定显式值。麻烦你给说一下,谢谢您了
      

  3.   

    oh,my god ,it's ok!太感谢了,我无话可说了,分数虽然不多,但是在这里表达我对您的崇拜了,谢谢了!