数据库里有多个物料,每个物料的采购日期不同它的单价也有可能不相同
我现在想查询最后采购日期所对应的所有物料的单价,请问这句话应该怎么写?

解决方案 »

  1.   


    select 物料id, 单价 from 采购表 a, 
    (select 物料id, max(采购日期) as MaxDate from 采购表 group by 物料id) b
    where a.物料id=b.物料id and a.采购日期=b.MaxDate
      

  2.   

    select top 1 * from  物料表 order by 日期 desc   
    这样就可以得到你需要的记录
    在通过
    FieldByName('单价').AsString得到值
      

  3.   

    select
      bomID,
      bomName,
      .....
      LastPrice = 
          (
              select e.price
              from
                 (select d.bomID, purchaseDate = Max(c.采购日期)
                   from  采购单 c
                         inner join 采购单明细 d on c.采购单ID = d.采购单id
                   group by d.bomID
                  ) p
                 inner join 
                 (select d.bomID, pDate = c.采购日期, price = d.采购单价
                   from  采购单 c
                         inner join 采购单明细 d on c.采购单ID = d.采购单id
                  ) e ON p.bomID = e.bomID AND p.pruchasedate = e.pDate
              where p.bomID = b.bomID
           )  
    from 
      bom b
        
      

  4.   

    物料和采购单价在a表,采购金额在b表
    这个是不是要用到left join 语句,请大家再完善下
      

  5.   

    采购金额好像没用到吧?就用我上面写的sql好了。顶多再加几个物料名称之类的字段
      

  6.   

    SELECT A.物料,A.采购单价,A.日期
    ,B.采购金额 
    FROM A INNER JOIN B ON A.物料=B.物料 WHERE A.RQ=(SELECT MAX(RQ) FROM A)
      

  7.   

    SELECT A.物料,A.采购单价,B.日期 
    ,B.采购金额 
    FROM A INNER JOIN B ON A.物料=B.物料 WHERE B.RQ=(SELECT MAX(RQ) FROM B) 
      

  8.   


    --SQL和ORACLE都一样,如下
    Select WL_DJ from WL where WL_CGRQ=(Select max(WL_CGRQ) from WL )
      

  9.   

    表a
      A001          A002
      物料1          单价1 
      物料1          单价2
      物料2          单价1
      物料2          单价2
      物料2          单价3
      物料3          单价1
      物料3          单价2 
      物料3          单价3
      物料4          单价1
      ...            ...表b
       B001             B002
      物料1          采购日期1 
      物料1          采购日期2
      物料2          采购日期1
      物料2          采购日期2
      物料2          采购日期3
      物料3          采购日期1
      物料3          采购日期2 
      物料3          采购日期3
      物料4          采购日期1
      ...            ...
       发不了图,表结构差不多就这样吧,单价和日期后面的数字只是一个区分,不一定相同
      

  10.   

    SELECT A. A001     ,A.A002 ,B.B002 
    ,B.采购金额 
    FROM A INNER JOIN B ON A.A001 =B.B001  WHERE B.B002=(SELECT MAX(B002) FROM B) 
    就这样,没问题的