2015-03-24 3 views
0
CREATE TABLE customers 
(customer_id number(10) not null, 
    customer_name varchar2(50) not null 
); 

INSERT INTO customers VALUES(22,'W'); 
INSERT INTO customers VALUES(22,'W'); 
INSERT INTO customers VALUES(20,'Q'); 
INSERT INTO customers VALUES(20,'Q'); 
COMMIT; 

Теперь я пытаюсь получить разный ранг, соответствующим мои перегородки по имени клиентаSQL аналитическая функция: ранг() над разделом, не работает свойству

SELECT DENSE_RANK() OVER(PARTITION BY customer_name ORDER BY CUSTOMER_ID) , CUSTOMER_ID FROM CUSTOMERS; 

Ouput:

1 20 
1 20 
1 22 
1 22 

ожидаемый результат:

1 20 
1 20 
2 22 
2 22 

ответ

0

использование ниже запроса

SELECT 
DENSE_RANK() OVER(ORDER BY CUSTOMER_ID) , 
CUSTOMER_ID 
FROM CUSTOMERS; 

удалить раздел BY пунктом, потому что если и использовать раздел пунктом будет разделить результат на основе имени.

Смежные вопросы