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

वृद्धि पंक्ति संख्या जब Oracle में फ़ील्ड का मान बदलता है

आप विश्लेषणात्मक कार्यों को जोड़ सकते हैं SUM (रनिंग टोटल के रूप में प्रयुक्त) और LAG :

SQL> WITH data AS (
  2            SELECT 'person1' person, 'day1' day, 'Y' flag FROM dual
  3  UNION ALL SELECT 'person1' person, 'day2' day, 'Y' flag FROM dual
  4  UNION ALL SELECT 'person1' person, 'day3' day, 'Y' flag FROM dual
  5  UNION ALL SELECT 'person1' person, 'day4' day, 'N' flag FROM dual
  6  UNION ALL SELECT 'person1' person, 'day5' day, 'N' flag FROM dual
  7  UNION ALL SELECT 'person1' person, 'day6' day, 'Y' flag FROM dual
  8  UNION ALL SELECT 'person1' person, 'day7' day, 'Y' flag FROM dual
  9  UNION ALL SELECT 'person1' person, 'day8' day, 'Y' flag FROM dual
 10  )
 11  SELECT person, DAY, flag, SUM(gap) over (PARTITION BY person
 12                                           ORDER BY DAY) grp
 13    FROM (SELECT person, DAY, flag,
 14                 CASE WHEN flag = lag(flag) over (PARTITION BY person
 15                                                  ORDER BY DAY)
 16                      THEN 0
 17                      ELSE 1
 18                 END gap
 19            FROM DATA);

PERSON  DAY  FLAG        GRP
------- ---- ---- ----------
person1 day1 Y             1
person1 day2 Y             1
person1 day3 Y             1
person1 day4 N             2
person1 day5 N             2
person1 day6 Y             3
person1 day7 Y             3
person1 day8 Y             3



  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. पीएल/एसक्यूएल का उपयोग करके मैं एक ब्लॉब में फ़ाइल की सामग्री कैसे प्राप्त करूं?

  3. ऑरैकल में स्ट्रिंग के हिस्से को कैसे हटाएं

  4. Oracle में समय के बिना दिनांक प्रकार

  5. SQL का उपयोग करके वर्ड द्वारा रिवर्स स्ट्रिंग वर्ड