有一张表
仓库编码 商品编码  出库价            出库日期
CK0001 CH0001 13.010000  2010-09-01 00:00:00.000
CK0001 CH0001 15.000000          2010-08-16 00:00:00.000
CK0001 CH0003 100.000000 2010-07-27 00:00:00.000
CK0001 CH0003 100.000000 2010-08-09 00:00:00.000
CK0001 CH0003 100.000000 2010-08-10 00:00:00.000
CK0001 CH0003 100.000000 2010-08-16 00:00:00.000
CK0001 CH0003 100.000000 2010-09-06 00:00:00.000
CK0001 CH0006 120.000000 2010-09-01 00:00:00.000
CK0003 CH0001 12.500000          2010-08-30 00:00:00.000
CK0003 CH0001 13.010000          2010-09-03 00:00:00.000
CK0003 CH0002 80.000000          2010-08-07 00:00:00.000
CK0003 CH0002 80.000000          2010-08-26 00:00:00.000
CK0003 CH0003 100.000000 2010-08-05 00:00:00.000
CK0003 CH0003 100.000000 2010-08-06 00:00:00.000
CK0003 CH0003 100.000000 2010-08-16 00:00:00.000
CK0003 CH0003 100.000000 2010-08-26 00:00:00.000
CK0003 CH0003 100.000000 2010-08-29 00:00:00.000
CK0003 CH0003 100.000000 2010-08-30 00:00:00.000
CK0003 CH0003 100.000000 2010-08-31 00:00:00.000
CK0003 CH0003 100.000000 2010-09-01 00:00:00.000
CK0003 CH0003 100.000000 2010-09-03 00:00:00.000
CK0003 CH0003 100.320000 2010-08-26 00:00:00.000
CK0003 CH0004 65.000000          2010-08-07 00:00:00.000目前是想把这些数据帅选过滤成同一仓库的同一商品只有一个出库价格(使用后日期的)

解决方案 »

  1.   

    select * 
    from tb t
    where not exists(select 1 
                     from tb
                     where 仓库编码=t.仓库编码 and 商品编码=t.商品编码 and 出库日期>t.出库日期)
      

  2.   

    也就是最后的数据是
    CK0001 CH0001 13.010000 2010-09-01 00:00:00.000
    CK0001 CH0003 100.000000 2010-09-06 00:00:00.000
    CK0001 CH0006 120.000000 2010-09-01 00:00:00.000
    CK0003 CH0001 13.010000 2010-09-03 00:00:00.000
    CK0003 CH0002 80.000000 2010-08-26 00:00:00.000
    CK0003 CH0003 100.000000 2010-09-03 00:00:00.000
    CK0003 CH0004 65.000000 2010-08-07 00:00:00.000
      

  3.   

    这个如果直接用分组的话,是做不出来的。必须用到exists运算,判断在其自身表里,不存在比某个日期还要大的日期,选出来即可。
    select 仓库编码, 商品编码, 出库价, 出库日期
    from tb t
    where not exists(select 1 
                     from tb
                     where 仓库编码=t.仓库编码 and 商品编码=t.商品编码 and 出库日期>t.出库日期)
      

  4.   

    select T.* from #TA T INNER JOIN
    (SELECT 仓库编码,商品编码,MAX(出库日期) 出库日期 FROM #TA GROUP BY 仓库编码,商品编码) D
    ON T.仓库编码=D.仓库编码 AND T.商品编码=D.商品编码 AND T.出库日期=D.出库日期