Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Grupuj Oracle SQL po kolumnie z liczbą, ale tylko wtedy, gdy kolumna ma wartość null lub 0

to zrobi to:

SQL> select id, other_id, date_value, value, cnt from
  2   (
  3     SELECT id, other_id, date_value, value,
  4     case
  5       when other_id is null or other_id = '0' then 1
  6       else ROW_NUMBER() OVER (partition by other_id order BY Date_Value desc)
  7     end r,
  8     case
  9       when other_id is null or other_id = '0' then 1
 10       else count(*) OVER (partition by other_id)
 11     end cnt
 12     FROM some_table
 13   )
 14  where r = 1
 15  order by id;

        ID OTH DATE_VALUE               VALUE        CNT
---------- --- ------------------- ---------- ----------
         1 abc 2011-04-20 21:03:05        104          3
         3 xyz 2011-04-20 21:03:03        130          2
         5 0   2011-04-20 21:02:08         65          1
         7     2011-04-20 21:02:07        200          1
         8 0   2011-04-20 21:02:07        201          1
         9     2011-04-20 21:02:07        202          1

6 rows selected.

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można odwołać się do dziesiątego i kolejnych ciągów zastępczych w regexp_replace Oracle?

  2. Jak używać typu BOOLEAN w instrukcji SELECT

  3. problem ze składnią sql

  4. PL/SQL — Warunki opcjonalne w klauzuli where — bez dynamicznego sql?

  5. Oracle:połącz wszystkie zapytania 1 i zapytanie 2, aby odjąć niektóre wiersze, jeśli zapytanie 1 ma rowdata