0
날짜 및 주문 열이있는 테이블이 있습니다. 이 테이블에 다음과 같이 채울 Batch라는 열을 추가하려고합니다. 각 날짜에 대해 첫 번째 Order에서 시작하여 각 두 주문을 한 배치로 그룹화합니다.동일한 테이블의 다른 열 값을 기반으로 열에 값 지정
이 예제에서 첫 번째 4 개 레코드 인 Date = 1 인 레코드의 경우, 첫 번째 두 레코드 (Order = 10 및 Order = 30)의 배치 번호는 Batch = 1이고 두 번째 레코드 (Order = 80 및 Order = 110)에는 Batch = 2 등이 있습니다.
나머지 레코드 수가 배치 크기 (이 예에서는 2)보다 작 으면 남은 순서에는 다음 예제와 같이 별도의 배치 번호가 있습니다. number 마지막 레코드 (5 레코드)이 있도록 날짜와 레코드 = 2, 홀수 배치 = 3
Date Order
-----------
1 10
1 30
1 80
1 110
2 20
2 30
2 50
2 70
2 120
3 90
Date Order Batch
------------------
1 10 1
1 30 1
1 80 2
1 110 2
2 20 1
2 30 1
2 50 2
2 70 2
2 120 3
3 90 1
감사합니다. 그것은 작동합니다. – Matin
아주 기본적인 질문은 죄송합니다. 이 쿼리를 실행하면 "단일 행 하위 쿼리가 두 개 이상의 행을 반환합니다"라는 오류 메시지가 표시되는 이유는 무엇입니까? update mytable set batch = (selecttrunc (row_number() over (orderid별로 dateid 순서로 파티션) +1)/2) from mytable'); – Matin
내부 쿼리에서 테이블의 모든 레코드를 선택했기 때문에. 각 갱신 레코드마다 하나의 레코드 만 선택하려고합니다. 내부 레코드에서 where 절을 사용하여 업데이트 레코드의 키로 제한해야합니다. –