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

SQL डेटिफ़ - पंक्तियों के बीच दिनांकित खोजें

यदि SQL सर्वर का उपयोग कर रहे हैं, तो एक तरीका यह करना है:

DECLARE @Data TABLE (IDCode INTEGER PRIMARY KEY, DateVal DATETIME)
INSERT @Data VALUES (1, '2011-03-02 08:00')
INSERT @Data VALUES (2, '2011-03-02 08:10')
INSERT @Data VALUES (3, '2011-03-02 08:23')
INSERT @Data VALUES (4, '2011-03-02 08:25')
INSERT @Data VALUES (5, '2011-03-02 09:25')
INSERT @Data VALUES (6, '2011-03-02 10:20')
INSERT @Data VALUES (7, '2011-03-02 10:34')

SELECT t1.IDCode, t1.DateVal, ISNULL(DATEDIFF(mi, x.DateVal, t1.DateVal), 0) AS Mins
FROM @Data t1
    OUTER APPLY (
        SELECT TOP 1 DateVal FROM @Data t2 
        WHERE t2.IDCode < t1.IDCode ORDER BY t2.IDCode DESC) x

CTE और ROW_NUMBER() का उपयोग करने का दूसरा तरीका इस प्रकार है:

;WITH CTE AS (SELECT ROW_NUMBER() OVER (ORDER BY IDCode) AS RowNo, IDCode, DateVal FROM @Data)

SELECT t1.IDCode, t1.DateVal, ISNULL(DATEDIFF(mi, t2.DateVal, t1.DateVal), 0) AS Mins
FROM CTE t1
    LEFT JOIN CTE t2 ON t1.RowNo = t2.RowNo + 1
ORDER BY t1.IDCode


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर में पंक्ति संख्या पर आंतरिक शामिल कैसे करें?

  2. SQL में क्वेरी द्वारा समूह में गैर कुल कॉलम दिखा रहा है

  3. SQL - COALESCE और ISNULL के बीच अंतर?

  4. SQL सर्वर परिवर्तन पुनर्प्राप्ति मॉडल

  5. SQL सर्वर में निहित लेनदेन कैसे काम करते हैं