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到Projects表,其主键也被称为专案编号。
我想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
第二专案编号必须引用被计算当前行,而不是当前行中的选择语句(这是一样的contract.projectid
)。
我使用火鸟。我需要的列中的表而不是因为使用的数据库应用程序中的ORM问题的SELECT语句。
解决方案
只需与当前表中的表名的前缀字段:
DeadlineDate COMPUTED BY ((
select first 1 AddMonth(contract.BeginDate, DeadlineMonths)
from addendums contract
where contract.projectid = projects.projectid
order by contract.BeginDate ))
其他提示
你能在你的查询创建一个视图,并在ORM
使用它?
CREATE VIEW v_addendums
AS
SELECT ID, ProjectID, BeginDate, DeadlineMonths,
(
SELECT first 1 AddMonth(contract.BeginDate, DeadlineMonths)
FROM addendums contract
WHERE contract.projectid = a.projectid
ORDER BY
contract.BeginDate
)
FROM addendums a
不隶属于 StackOverflow