sql >> Database teknologi >  >> RDS >> Oracle

Oracle/Sybase SQL - få værdi baseret på en tidligere post (ikke en simpel LAG)

En måde at gøre dette på er med indlejrede rangeringsfunktioner. Først skal du tildele en konstant værdi til alt, der får én værdi (ved at bruge max() over ) og brug derefter dette som en partition.

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. En kolonne SQL-tabel, hvor kolonnen er et ID - er det vanvittigt?

  2. SQL Query fortsætter med at køre i meget lang tid, hvis søgeordet ikke findes

  3. Sådan ser du resultatet fra mysql-forespørgsel i netbeans

  4. Sådan importeres CSV-fil til MySQL-tabel