Domanda

Ho una tabella che rappresenta i parametri di un contratto - compreso il loro cambiamento nel tempo attraverso integrazioni. Il primo addendum è un addendum "speciale" che rappresenta i parametri in cui il contratto è stato firmato prima.

Ecco come la tabella dovrebbe essere simile:

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 è un FK al tavolo progetti la cui chiave primaria è anche chiamato ProjectID.

Voglio DeadlineDate di essere un campo calcolato, calcolato in questo modo:

DeadlineDate COMPUTE BY ((
    select first 1 AddMonth(contract.BeginDate, DeadlineMonths)
    from addendums contract
    where contract.projectid = projectid
    order by contract.BeginDate ))

Il problema è che in contract.projectid = projectid secondo ProjectID deve fare riferimento alla riga corrente viene calcolato, non riga corrente select (che è lo stesso come contract.projectid).

sto usando Firebird. Ho bisogno della colonna nella tabella e NON in un'istruzione SELECT a causa di problemi ORM nell'applicazione utilizzando il database.

È stato utile?

Soluzione

Proprio precedere il campo con nome della tabella della tabella corrente:

DeadlineDate COMPUTED BY ((
select first 1 AddMonth(contract.BeginDate, DeadlineMonths)
from addendums contract
where contract.projectid = projects.projectid
order by contract.BeginDate ))

Altri suggerimenti

Si può creare una vista su vostra richiesta e utilizzarlo nel 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top