DB2를 사용하여 테이블을 가져 와서 파티션으로 분할 한 다음 각 파티션 내에서 행을 정렬합니다. 내가 가진 테이블은 다음과 같습니다.
ID DATE EVENT
-- ---- -----
01 1999-06-01 a
01 1999-06-01 b
01 2006-01-01 a
01 2011-12-31 c
02 1999-01-01 a
02 2003-01-01 a
02 2003-01-01 b
02 2009-11-12 b
다음을 얻기 위해 주문하고 싶은 곳 ...
ID DATE EVENT SEQUENCE
-- ---- ----- --------
01 1999-06-01 a 1
01 1999-06-01 b 1
01 2006-01-01 a 2
01 2011-12-31 c 3
02 1999-01-01 a 1
02 2003-01-01 a 2
02 2003-01-01 b 2
02 2009-11-12 b 3
그래서 노력하고 있습니다.
select a.*, row_number() over(partition by ID,order by DATE) from mytable a
나에게 준다 :
ID DATE EVENT SEQUENCE
-- ---- ----- --------
01 1999-06-01 a 1
01 1999-06-01 b 2
01 2006-01-01 a 3
01 2011-12-31 c 4
02 1999-01-01 a 1
02 2003-01-01 a 2
02 2003-01-01 b 3
02 2009-11-12 b 4
여기서 볼 수 있듯이 연속 행이 이전 행과 동일한 날짜를 가질 수 있지만 이는 무시되고 SEQUENCE 열이 반복됩니다.
다음 행에 동일한 날짜가있는 경우 이후 날짜가있는 행이 나타날 때까지 시퀀스가 보존되도록하려면 어떻게해야합니까?
매우 감사합니다.
분명히이 row_number()
함수는 창 내의 다른 행에 대해 동일한 숫자를 반환하지 않습니다. dense_rank()
기능 을 사용해야합니다 .
그런데 쿼리에 구문 오류가 있으며 열 이름에 예약어 (이 경우 'DATE')를 사용하는 것은 좋지 않습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다