现有数据库表A,其中有三列:库存年月,物料编码,物料单价目前有12个月的数据记录,每个月都有相同的物料编码,每个月的单价也可能不一样,现在需要取出:物料编码,物料单价两列
条件:
1、同一个品号只取一个,但要满足下面两个条件。
2、物料单价列<>0;
3、库存年月取最大;
连成一句话:“库存年月”最大,且“物料单价”<>0的记录(数据表保证同一年月,品号不相同)。不知道这样的查询能否实现?

解决方案 »

  1.   


    select * from (
    select rid=row_number() over (partition by 物料编码 order by 库存年月 desc),* 
    from tb
    where 物料单价<>0
    ) t
    where rid=1
      

  2.   

    select * from tb a where 物料单价>0 and
     not exists(select 1 from tb where 物料编码=a.物料编码 and 物料单价>0 and 库存年月>a.库存年月)
      

  3.   

    --try
    select
     * 
    from
     tb t 
    where
     物料单价<>0 
    and
     库存年月=(select max(库存年月) from tb where 物料编码=a.物料编码 and 物料单价<>0 )
      

  4.   

    SELECT * FROM 表A AS t WHERE 物料单价<>0 AND NOT EXISTS( SELECT 1 FROM 表A WHERE 物料单价<>0 AND 物料编码=t.物料编码 AND 库存年月>t.库存年月)