Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

दिनांक अंतर पर समान FK का शीर्ष एक रिकॉर्ड प्राप्त करें

विचार इस प्रकार है

  • सभी बच्चे का चयन करें न्यूनतम संभव (अभिभावक) आईडी के साथ एक घंटे के भीतर आदेश। (मैं यहां मान रहा हूं कि सबसे कम ऑर्डर आईडी भी सबसे पुराना होगा ऑर्डर आईडी)।
  • इन परिणामों को मूल तालिका से जोड़ें।
  • अपडेट स्टेटमेंट के आधार के रूप में इन परिणामों का उपयोग करें।

एसक्यूएल स्टेटमेंट

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. गिटहब प्रतिबद्ध त्रुटि:अनुमति घातक:पथ संसाधित करने में असमर्थ ~/App_Data/aspnet-MyProject.mdf

  2. SqlServer:उपयोगकर्ता के लिए लॉगिन विफल रहा

  3. SQL सर्वर क्रॉस डेटाबेस निर्भरता प्राप्त करना

  4. क्या स्ट्रिंग को सीमित करने के लिए डबल कोट्स का उपयोग किया जा सकता है?

  5. एक डेटाबेस मेल खाता (SSMS) हटाएं