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

Oracle - पंक्तियों से मान को श्रेणियों में बदलें

मुझे लगता है कि इसमें शायद सुधार किया जा सकता है, लेकिन यह काम करता है:

WITH base AS  (
    SELECT  1 N FROM DUAL UNION ALL
    SELECT  2 N FROM DUAL UNION ALL
    SELECT  3 N FROM DUAL UNION ALL
    SELECT  6 N FROM DUAL UNION ALL
    SELECT  7 N FROM DUAL UNION ALL
    SELECT 17 N FROM DUAL UNION ALL
    SELECT 18 N FROM DUAL UNION ALL
    SELECT 19 N FROM DUAL UNION ALL
    SELECT 21 N FROM DUAL
)
, lagged AS
(
    SELECT n, LAG(n) OVER (ORDER BY n) lag_n FROM base
)
, groups AS
(
    SELECT n, row_number() OVER (ORDER BY n) groupnum
      FROM lagged
      WHERE lag_n IS NULL OR lag_n < n-1
)
, grouped AS
(
    SELECT n, (SELECT MAX(groupnum) FROM groups
                 WHERE groups.n <= base.n
              ) groupnum
      FROM base
)
SELECT groupnum, MIN(n), MAX(n)
  FROM grouped
  GROUP BY groupnum
  ORDER BY groupnum


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं SQL डेवलपर में स्थानीय फ़ाइल कैसे पढ़ूं?

  2. oracle sql गिनती करते समय अभिव्यक्ति द्वारा समूह नहीं है

  3. Oracle में करंट ओपन कर्सर कैसे खोजें?

  4. ORA-21700:ऑब्जेक्ट मौजूद नहीं है या ODP.NET से कॉल किए गए इनपुट पैरामीटर के रूप में एसोसिएटिव एरे के लिए डिलीट के लिए चिह्नित है

  5. ओरेकल में लंबवत परिणाम प्रदर्शित करना