我有一张表,表示合约的参数 - 包括它们随时间推移而通过附录进行的更改。第一份附录是代表合同首次签署时的参数的“特别”增编。SQL - 使用SELECT计算列中的当前参考行
这里的表应该如何看起来像:
ID ProjectID BeginDate DeadlineMonths DeadlineDate
1 20 20-12-2006 24 <computed= 20-12-2006 + 24 months>
2 23 12-03-2007 12 <computed= 12-03-2007 + 12 months>
3 20 06-09-2007 36 <computed= **20-12-2006** + 36 months>
专案编号是FK的项目表,其主键也被称为专案编号。
我想DeadlineDate是计算领域,像这样计算:
DeadlineDate COMPUTE BY ((
select first 1 AddMonth(contract.BeginDate, DeadlineMonths)
from addendums contract
where contract.projectid = projectid
order by contract.BeginDate))
的问题是,在contract.projectid = projectid
第二专案编号必须引用当前行被计算,而不是当前行中的select语句(这与contract.projectid
相同)。
我正在使用火鸟。由于在使用数据库的应用程序中发生ORM问题,我需要表中的列而不是SELECT语句中的列。
你怎么知道哪一行是要计算对吗?为什么在你的例子中,你计算行1和行3的值而不是行3的值? – 2009-09-23 14:57:08
由于第1行是ProjectID = 20的项目的第一行,因此它保存了合同启动的日期。第3行的BeginDate是附录签署的日期,但截止日期必须根据合同签署日期计算。 – Alex 2009-09-23 15:03:58