Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan satu rekor teratas dari FK yang sama pada perbedaan tanggal

Idenya adalah sebagai berikut

  • Pilih semua anak pesanan dalam waktu satu jam dengan ID (Induk) seminimal mungkin. (Saya berasumsi di sini bahwa OrderID terendah juga akan menjadi tertua ID Pesanan).
  • Gabungkan hasil ini dengan tabel asli.
  • Gunakan hasil ini sebagai dasar pernyataan pembaruan.

Pernyataan SQL

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sudahkah saya menghitung transaksi sebelum mengembalikan satu di blok tangkapan di T-SQL?

  2. Temukan Catatan Terakhir yang Disisipkan MS SQL SERVER

  3. Bagaimana cara menerapkan prosedur tersimpan Upsert bersyarat?

  4. 5 Fitur Teratas yang Perlu Disediakan Platform Pemantauan Kinerja Basis Data SQL Server Anda

  5. Alternatif SQL Server Management Studio untuk menelusuri/mengedit tabel dan menjalankan kueri