sql >> Databasteknik >  >> RDS >> Sqlserver

Få topp en post för samma FK på datumskillnad

Idén är följande

  • Välj alla underordnade beställningar inom en timme med minsta möjliga (förälder)ID. (Jag antar här att det lägsta OrderID också kommer att vara det äldsta OrderID).
  • Sätt ihop dessa resultat med den ursprungliga tabellen.
  • Använd dessa resultat som grund för uppdateringsförklaringen.

SQL-uttalande

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. Alfanumeriskt skiftläge okänslig sortering i postgres

  2. Återställ en databas i SQL Server 2017

  3. infoga array av värden i en databas med hjälp av SQL-fråga?

  4. Konvertera Oracle SQL Select till PostgreSQL select