SQL - المرجع الحالي الصف الحالي في عمود محسوب مع تحديد

StackOverflow https://stackoverflow.com/questions/1466530

  •  13-09-2019
  •  | 
  •  

سؤال

لدي جدول يمثل معلمات العقد - بما في ذلك تغييرها بمرور الوقت من خلال الإدمان. الإضافة الأولى هي إضافة "خاص" تمثل المعلمات عند توقيع العقد لأول مرة.

إليك كيف يجب أن يبدو الجدول:

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 هو FK إلى جدول المشاريع الذي يسمى مفتاحه الأساسي أيضا ProjectId.

أريد أن أكون حقل محسوب، محسوب مثل ذلك:

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).

أنا أستخدم firebird. أحتاج إلى العمود في الجدول وليس في عبارة مختارة بسبب مشكلات Orm في التطبيق باستخدام قاعدة البيانات.

هل كانت مفيدة؟

المحلول

فقط بادئة الحقل مع اسم جدول الجدول الحالي:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top