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;

現在、顧客名でパーティションに対応する別のランクを取得しようとしています

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

出力:

1   20
1   20
1   22
1   22

期待される出力:

1   20
1   20
2   22
2   22
4

1 に答える 1

1

以下のクエリを使用

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

partition by 句を削除します。partition by 句を使用すると、名前に基づいて結果が分割されるためです。

于 2015-03-30T07:16:56.977 に答える