sql >> Database >  >> RDS >> Sqlserver

Haal het beste record van dezelfde FK op datumverschil

Het idee is als volgt

  • Selecteer alle kinderen bestellingen binnen een uur met zijn minimaal mogelijke (Ouder)ID. (Ik neem hier aan dat de laagste OrderID ook de oudste is Bestel-ID).
  • Voeg deze resultaten samen met de originele tabel.
  • Gebruik deze resultaten als basis voor de update-instructie.

SQL-verklaring

UPDATE  Orders
SET     ParentOrderID = p.ParentOrderID
FROM    Orders o
        INNER JOIN (
          SELECT  ParentOrderID = MIN(o1.OrderID), OrderID = o2.OrderID
          FROM    Orders o1
                  LEFT OUTER JOIN Orders o2 ON 
                    o2.CustomerID = o1.CustomerID
                    AND o2.OrderDate > o1.OrderDate
                    AND DATEADD(hh, -1, o2.OrderDate) < o1.OrderDate
          GROUP BY o2.OrderID
        ) p ON p.OrderID = o.OrderID


  1. Bijwerken en toevoegen tenzij leeg

  2. Postgres-fout bij invoegen - ERROR:ongeldige bytereeks voor codering van UTF8:0x00

  3. Hoe Hibernate Session.doWork(...) gebruiken voor savepoints / geneste transacties?

  4. Hoe het maandnummer uit de datum in Oracle te halen