sql >> Databáze >  >> RDS >> Oracle

SQL Oracle - Kombinace po sobě jdoucích řádků s filtrem

Od položení této otázky uplynuly čtyři roky. Oracle však přidal MATCH_RECOGNIZE doložka Oracle 12c, což řešení zjednodušilo.

SELECT
  foo_id, high_speed, speed,
  NVL(DateFromZ, DateFrom) DateFrom,
  NVL(DateToZ, DateTo) DateTo
FROM test
MATCH_RECOGNIZE (
  ORDER BY RecordId
  MEASURES
    FIRST(zeros.DateFrom) AS DateFromZ,
    FINAL LAST(zeros.DateTo) AS DateToZ,
    COUNT(*) AS cnt
  ALL ROWS PER MATCH WITH UNMATCHED ROWS
  PATTERN (zeros+)
  DEFINE
    zeros AS zeros.speed = 0
)
WHERE speed > 0 OR cnt = 1
ORDER BY RecordId;

Výstup:

+--------+------------+-------+------------+------------+
| FOO_ID | HIGH_SPEED | SPEED |  DATEFROM  |   DATETO   |
+--------+------------+-------+------------+------------+
|     12 |         60 |    10 | 09/11/2011 | 10/11/2011 |
|     13 |         20 |    20 | 11/11/2011 | 11/11/2011 |
|     12 |          0 |     0 | 13/11/2011 | 14/11/2011 |
|     12 |         70 |    50 | 15/11/2011 | 26/11/2011 |
|     12 |         40 |    40 | 09/11/2011 | 09/11/2011 |
|     13 |         25 |    20 | 09/11/2011 | 09/11/2011 |
|     12 |          0 |     0 | 15/11/2011 | 19/11/2011 |
|     12 |         20 |    10 | 12/11/2011 | 12/11/2011 |
+--------+------------+-------+------------+------------+

Demo na db<>fiddle .




  1. MySql, jak mohu exportovat indexy z mé vývojové databáze do mé produkční databáze?

  2. Jak stáhnout osolené heslo z databáze a auth uživatele?

  3. Chyba databáze WordPress Server MySQL zmizel kvůli dotazu

  4. Jednoduchý skript Ajax Jquery – Jak mohu získat informace pro každý z řádků v tabulce?