我有一張表,表示合約的參數 - 包括它們隨時間推移而通過附錄進行的更改。第一份附錄是代表合同首次簽署時的參數的「特別」增編。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