데이터의 고유 한 그룹에 임의의 "기본 키"를 첨부하는 방법으로 Oracle에서 DENSE_RANK() 함수를 사용하려고합니다. 내 데이터 세트는 지난 며칠 동안 다른 "자산"에 대해 수행 된 다른 "위치"의 거래 목록입니다. 데이터 세트는 ASSET ASC, DATE ASC에 의해 사전 정렬됩니다 (아래 참조).Oracle DENSE_RANK()
ASSET LOCATION DATE
A LOC_A 9/1/2017
A LOC_A 9/1/2017
A LOC_B 9/5/2017
A LOC_B 9/7/2017
A LOC_A 9/11/2017
B LOC_A 8/22/2017
B LOC_C 8/25/2017
B LOC_C 8/26/2017
B LOC_A 9/2/2017
B LOC_A 9/3/2017
나는 (자산, 위치에 따라 ORDER) OVER DENSE_RANK()를 사용하면, 다음과 같은 출력을 얻을 : 그러나
ASSET LOCATION DATE ACTUAL
A LOC_A 9/1/2017 1
A LOC_A 9/1/2017 1
A LOC_B 9/5/2017 2
A LOC_B 9/7/2017 2
A LOC_A 9/11/2017 1
B LOC_A 8/22/2017 3
B LOC_C 8/25/2017 4
B LOC_C 8/26/2017 4
B LOC_A 9/2/2017 3
B LOC_A 9/3/2017 3
, 내가 값을 얻을 수있는 방법을 알아 내려고 노력하고있어를 여기에 나와있는 "예상 된"값 :
ASSET LOCATION DATE ACTUAL EXPECTED
A LOC_A 9/1/2017 1 1
A LOC_A 9/1/2017 1 1
A LOC_B 9/5/2017 2 2
A LOC_B 9/7/2017 2 2
A LOC_A 9/11/2017 1 3
B LOC_A 8/22/2017 3 4
B LOC_C 8/25/2017 4 5
B LOC_C 8/26/2017 4 5
B LOC_A 9/2/2017 3 6
B LOC_A 9/3/2017 3 6
이 향해 노력에 어떤 도움을 크게 감상 할 수있다.
내 SQL은
SELECT ASSET, LOCATION, TXNDATE,
DENSE_RANK() OVER (ORDER BY ASSET, LOCATION) AS DENSERANK
FROM TEMPTABLE
ORDER BY ASSET, TXNDATE
이며, 예, 나는 위의 "실제"결과를 얻고있다.
그 결과를 얻지 않아야합니다. 'PARTITION BY'를 사용하지 않으시겠습니까? – Lamak
My SQL은 ASSET, LOCATION, TXNDATE, DENSE_RANK() 이상 (ASDET, LOCATION 별 ORDER BY ASSET, LOCATION) ASSET, TXNDATE 및 YES로 DENSERANK에서 위의 "ACTUAL"결과를 얻습니다. – Nathan