Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL условно класиране

Ако разбирам правилно, можете да опитате да използвате CASE WHEN с сума прозоречна функция

CASE WHEN проверете col3 не е null do collect else display NULL

CREATE TABLE T( col1 VARCHAR(5), col2 DATE, col3 DATE);INSERT INTO T VALUES ('a', to_date('2018-01-20','YYYY-MM-DD') , to_date('2018-03-04','YYYY-MM-DD')); INSERT INTO T VALUES ( 'a', to_date('2018-01-24','YYYY-MM-DD') , to_date('2018-04-04','YYYY-MM-DD')); INSERT INTO T VALUES ('b', to_date('2018-01-02','YYYY-MM-DD') , to_date('2018-05-03','YYYY-MM-DD')); INSERT INTO T VALUES ('c', to_date('2017-01-02','YYYY-MM-DD') , to_date('2017-05-08','YYYY-MM-DD')); INSERT INTO T VALUES ('d', TO_DATE('2016-05-24','YYYY-MM-DD'), null); INSERT INTO T VALUES ('c', TO_DATE('2018-02-05','YYYY-MM-DD') , to_date('2018-05-03','YYYY-MM-DD')); INSERT INTO T VALUES ('c', TO_DATE('2018-07-28','YYYY-MM-DD'), null);  

Заявка 1 :

изберете t1.*, rank() OVER(разделяне по col1 подреждане по col2 desc) rank1, (CASE WHEN COL3 НЕ Е NULL THEN SUM(CASE WHEN COL3 IS NOT NULL THEN 1 ELSE 0 END) OVER( дял по col1 подреждане по col2 desc) ELSE NULL END) rank2FROM T t1 

Резултати :

<предварителен код>| COL1 | COL2 | COL3 | РАНГ1 | РАНК2 ||------|-----------------------|----------------- -----|-------|--------|| a | 2018-01-24T00:00:00Z | 2018-04-04T00:00:00Z | 1 | 1 || a | 2018-01-20T00:00:00Z | 2018-03-04T00:00:00Z | 2 | 2 || б | 2018-01-02T00:00:00Z | 2018-05-03T00:00:00Z | 1 | 1 || c | 2018-07-28T00:00:00Z | (нула) | 1 | (нула) || c | 2018-02-05T00:00:00Z | 2018-05-03T00:00:00Z | 2 | 1 || c | 2017-01-02T00:00:00Z | 2017-05-08T00:00:00Z | 3 | 2 || d | 2016-05-24T00:00:00Z | (нула) | 1 | (null) |

  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. Блокирано извикване на недефинирана функция oci_connect() с помощта на XAMPP

  3. Грешка в адаптера на протокол Oracle

  4. Икони за разработчици на SQL

  5. Преобразуване на голям CLOB обект в .NET низ за поставяне в клетка DataGridView