1

我有一个代表合同参数的表格 - 包括它们通过附录随时间的变化。第一个附录是一个“特殊”附录,表示合同首次签署时的参数。

表格应如下所示:

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>

ProjectID 是 Projects 表的 FK,其主键也称为 ProjectID。

我希望 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第二个 ProjectID 必须引用当前正在计算的行,而不是 select 语句中的当前行(与 相同contract.projectid)。

我正在使用火鸟。由于使用数据库的应用程序中的 ORM 问题,我需要表中的列而不是 SELECT 语句中的列。

4

2 回答 2

3

只需在字段前加上当前表的表名即可:

DeadlineDate COMPUTED BY ((
select first 1 AddMonth(contract.BeginDate, DeadlineMonths)
from addendums contract
where contract.projectid = projects.projectid
order by contract.BeginDate ))
于 2009-11-09T12:05:15.203 回答
1

您可以在查询中创建一个视图并在其中使用它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
于 2009-09-23T15:04:03.143 回答