要求按生效日期/采购数量以最快的方式查询出来?兄弟们有什么更快高超?
谢谢!
一表结构如下:
产品编号  生效日期   采购数量  单价
A         2001/09/01  10        2.1
A         2002/01/01  10        2
A         2002/01/01  150       1.5
A         2006/01/01  150       1.3
B         2002/01/01  100       1.5要求出结果:
产品编号  生效日期   采购数量  单价
A         2002/01/01  10        2
A         2006/01/01  150       1.3
B         2002/01/01  100       1.5

解决方案 »

  1.   

    select * from tablename a
    where not exists (
    select 1 from tablename
    where 产品编号  =a.产品编号  and 采购数量  =a.采购数量  
    and 生效日期   >a.生效日期   
    )
      

  2.   

    create table T(产品编号 char(1), 生效日期 datetime,   采购数量 int,  单价 decimal(10, 1))
    insert T select 'A',         '2001/09/01',  10,        2.1
    union all select 'A',         '2002/01/01',  10,        2
    union all select 'A',         '2002/01/01',  150,      1.5
    union all select 'A',         '2006/01/01',  150,       1.3
    union all select 'B',         '2002/01/01',  100,       1.5select T.* from T
    inner join
    (select max(生效日期) as 生效日期 , 采购数量 from T group by 采购数量)
    B on T.生效日期=B.生效日期 and T.采购数量=B.采购数量
    order by T.产品编号, T.采购数量
    --result
    产品编号 生效日期                                                   采购数量        单价           
    ---- ------------------------------------------------------ ----------- ------------ 
    A    2002-01-01 00:00:00.000                                10          2.0
    A    2006-01-01 00:00:00.000                                150         1.3
    B    2002-01-01 00:00:00.000                                100         1.5(3 row(s) affected)
      

  3.   

    --再加一個分組條件
    select T.* from T
    inner join
    (select max(生效日期) as 生效日期 , 产品编号, 采购数量 from T group by 产品编号, 采购数量)
    B on T.生效日期=B.生效日期 and T.采购数量=B.采购数量 and T.产品编号=B.产品编号
    order by T.产品编号, T.采购数量