ऐसा करने का एक तरीका नेस्टेड रैंकिंग फ़ंक्शन के साथ है। सबसे पहले, एक मान प्राप्त करने वाली हर चीज़ के लिए एक स्थिर मान असाइन करें (max() over
. का उपयोग करके) ) और फिर इसे एक विभाजन के रूप में उपयोग करें।
select t.Invoice_Id, t.Invoice_Line, t.Kit_Flag, t.Part_Number,
max(KitPart) over (partition by invoice_id, KitNum) as Parent_Part
from (select t.*,
sum(isKit) over (partition by InvoiceId order by InvoiceLine) as KitNum
from (select t.Invoice_Id, t.Invoice_Line, t.Kit_Flag, t.Part_Number,
(case when Kit_Flag = 'K' then 1 else 0 end) as IsKit,
(case when Kit_Flag = 'K' then Part_Number end) as KitPart
from Invoice_Data t
) t
) t