sql >> Databáze >  >> RDS >> Oracle

Oracle/Sybase SQL – získejte hodnotu na základě předchozího záznamu (není jednoduchá LAG)

Jedním ze způsobů, jak toho dosáhnout, jsou vnořené funkce hodnocení. Nejprve přiřaďte konstantní hodnotu všemu, co dostane jednu hodnotu (pomocí max() over ) a poté jej použijte jako oddíl.

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



  1. Oracle:Co dělá `(+)` v klauzuli WHERE?

  2. Jak používat MySQL a MSSQL společně ve zdroji dat Grails?

  3. Dvě vložení v PHP/MySQL pomocí LAST_INSERT_ID() a řádky z jiné tabulky

  4. MySQL odstraňuje nenumerické znaky pro porovnání