数据库里有多个物料,每个物料的采购日期不同它的单价也有可能不相同
我现在想查询最后采购日期所对应的所有物料的单价,请问这句话应该怎么写?
我现在想查询最后采购日期所对应的所有物料的单价,请问这句话应该怎么写?
解决方案 »
- DELPHI自带的SOCKET控件,是如何进行UDP通信的?
- 一个关于ShellExecute的问题
- 哇靠,我的DELPHI会自动写代码
- 如何提取网页中的背景图和FLASH图
- shellexecute的问题
- 请问如何在Timer控件timer事件中改写动态创建的Label的caption?
- 我想使我form上的Treeview在双击他某个节点的文字时不收缩这个节点以下的节点!
- "模态"窗体的全屏与非全屏切换
- 哪儿有《Delphi 5.X ADO_MTS_COM+高级程序设计篇》下载?
- TCP/IP问题
- 在linux+squid中,当Ftp下载通过http代理时,有没遇到过FTP下载时只能在IE中下载
- delphi2009 和 delphi2006之间的问题?
select 物料id, 单价 from 采购表 a,
(select 物料id, max(采购日期) as MaxDate from 采购表 group by 物料id) b
where a.物料id=b.物料id and a.采购日期=b.MaxDate
这样就可以得到你需要的记录
在通过
FieldByName('单价').AsString得到值
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
这个是不是要用到left join 语句,请大家再完善下
,B.采购金额
FROM A INNER JOIN B ON A.物料=B.物料 WHERE A.RQ=(SELECT MAX(RQ) FROM A)
,B.采购金额
FROM A INNER JOIN B ON A.物料=B.物料 WHERE B.RQ=(SELECT MAX(RQ) FROM B)
--SQL和ORACLE都一样,如下
Select WL_DJ from WL where WL_CGRQ=(Select max(WL_CGRQ) from WL )
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
... ...
发不了图,表结构差不多就这样吧,单价和日期后面的数字只是一个区分,不一定相同
,B.采购金额
FROM A INNER JOIN B ON A.A001 =B.B001 WHERE B.B002=(SELECT MAX(B002) FROM B)
就这样,没问题的