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

पंक्तियों का चयन करें जब Oracle में दिनांक के बीच स्तंभ मान बदलता है?

आप COUNT( DISTINCT code ) OVER ( PARTITION BY id ) का उपयोग कर सकते हैं केवल एक टेबल स्कैन का उपयोग करके अपना उत्तर प्राप्त करने के लिए विश्लेषणात्मक कार्य:

SQL Fiddle

Oracle 11g R2 स्कीमा सेटअप :

CREATE TABLE table_name ( ID, Code, "DATE" ) AS
SELECT 1, 'A', DATE '2018-02-19' FROM DUAL UNION ALL
SELECT 1, 'B', DATE '2018-02-18' FROM DUAL UNION ALL
SELECT 1, 'B', DATE '2018-02-17' FROM DUAL UNION ALL
SELECT 1, 'B', DATE '2018-02-16' FROM DUAL UNION ALL
SELECT 2, 'A', DATE '2018-02-17' FROM DUAL UNION ALL
SELECT 2, 'B', DATE '2018-02-16' FROM DUAL UNION ALL
SELECT 3, 'A', DATE '2018-02-17' FROM DUAL UNION ALL
SELECT 3, 'A', DATE '2018-02-16' FROM DUAL UNION ALL
SELECT 4, 'D', DATE '2018-02-16' FROM DUAL;

क्वेरी 1 :

SELECT ID,
       Code,
       "DATE"
FROM   (
  SELECT t.*,
         COUNT( DISTINCT code ) OVER ( PARTITION BY id ) AS num_changes
  FROM   table_name t
  WHERE  "DATE" BETWEEN DATE '2018-02-16'
                    AND DATE '2018-02-19'
)
WHERE num_changes > 1

परिणाम :

| ID | CODE |                 DATE |
|----|------|----------------------|
|  1 |    A | 2018-02-19T00:00:00Z |
|  1 |    B | 2018-02-18T00:00:00Z |
|  1 |    B | 2018-02-17T00:00:00Z |
|  1 |    B | 2018-02-16T00:00:00Z |
|  2 |    A | 2018-02-17T00:00:00Z |
|  2 |    B | 2018-02-16T00:00:00Z |

प्रश्न 2 :

SELECT ID,
       Code,
       "DATE"
FROM   (
  SELECT t.*,
         COUNT( DISTINCT code ) OVER ( PARTITION BY id ) AS num_changes
  FROM   table_name t
  WHERE  "DATE" BETWEEN DATE '2018-02-16'
                    AND DATE '2018-02-18'
)
WHERE num_changes > 1

परिणाम :

| ID | CODE |                 DATE |
|----|------|----------------------|
|  2 |    A | 2018-02-17T00:00:00Z |
|  2 |    B | 2018-02-16T00:00:00Z |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. वर्जित संबंध Oracle अकादमी

  2. Oracle 10g - इन्सर्ट स्टेटमेंट में एस्केप कोट

  3. ओरेकल में एक अलग प्रारूप में तारीख कैसे प्रदर्शित करें?

  4. Oracle 10g पर webapp से javax/xml/namespace/QName क्लास को लिंक करते समय लोडर बाधाओं का उल्लंघन किया गया

  5. ओरेकल के साथ क्वेरी का वर्णन करें (नेट कनेक्टर)