여기가 계약입니다. 데이터가있는 테이블이 있습니다. 특정 필드를 기반으로 행 발생과 함께 필드를 채울 필요가 있습니다. 나는 한 행을 가지고 있을지도 모릅니다. 나는 10을 가질 것입니다. 그 숫자를 채워야합니다. 나는 rownumber()를 사용하여 select에서 숫자가 무엇인지 판단했다. 그러나 테이블을 업데이트하는 것은 문제가되었습니다. 조인을 시도했는데, tablename과 select, then update. 아무것도 효과가 없습니다.여러 행으로 Oracle에서 row_number()를 사용하여 업데이트
이 코드 :
update Rptdata
SET c98 = (SELECT R from
(select rs1.c1, rs1.c5,rs1.c3,
row_number() over(partition by rs1.c1,0, rs1.c5,rs1.c3 order by rs1.c1,rs1.c5,rs1.c3 desc) as R
from Rptdata rs1
where rs1.c1 = c1
and rs1.c5 = c5
and rs1.c3 = c3
-- and rs1.c6 = c6
-- and rs1.c7 = c7
-- and rs1.c8 = c8
-- and rs1.c9 = c9
and rs1.program_name = 'INTERNAL'
AND rs1.program_id=030911
AND (rs1.c6 IS NULL
or rs1.c8 IS NULL
or rs1.c9 IS NULL)
and rs1.c28 IS NULL
)
)
WHERE program_name = 'INTERNAL'
AND program_id=030911
AND (c6 IS NULL
or c8 IS NULL
or c9 IS NULL)
and c28 IS NULL
오류 ORA-01427를 생산 : 단일 행 부질의는 하나 개 이상의 행을 반환합니다. 나는 내가 원하는 것이라고 생각한다. 나는 주석을 제거하고 - rs1.c6 = c6 그리고 187 개의 행을 업데이트한다고 알려줍니다. 커밋 한 다음 해당 187 행의 선택 실행하고 c98에 아무것도 없습니다.