내 [newtable]에 내 ID를 생성하는 데 문제가 있습니다. 새 하위 그룹마다 하위에서 증가해야합니다. 제안 사항이 있으십니까? 내 생각에 중첩 된 선택에 case 문을 넣을 수 있습니까? 내 insert 문에서 select가 필요합니다. newtable이라는 테이블은 비어 있으며 main과 sub의 데이터로 채 웁니다. 인서트는 고정 될 필요가있는 셀렉트이기 때문에 여기에 빠져 있습니다.하위 그룹을 기준으로 내 테이블에서 ID 생성
SELECT
(SELECT NVL(MAX(newtable.ID), 0)+1 AS MAX_VAL FROM newtable)AS ID
,main.ID as ID_PLACE
, main.place
, sub.somedata
FROM main
LEFT JOIN sub on main.ID = sub.ID
일부 데이터는 결과 (안 테스트)
with tab as (SELECT NVL(MAX(newtable.ID), 0)+1 AS MAX_VAL FROM newtable)
SELECT ((select max_val from tab) +
dense_rank() over (order by main.ID)) ID
,main.ID as ID_PLACE
, main.place
, sub.somedata
FROM main
LEFT JOIN sub on main.ID = sub.ID
편집이 시도이
sub
id somedata
972 fdsfds
972 fdsfds
972 fdsfds
972 fdsfds
972 fdsfds
972 fdsfds
973 opfg
973 kl
973 uu
main
id place
972 2564
973 1122
newtable
id id_place place somedata
1 972 2564 fdsfds
1 972 2564 fdsfds
1 972 2564 fdsfds
1 972 2564 fdsfds
1 972 2564 fdsfds
1 972 2564 fdsfds
2 973 1122 opfg
2 973 1122 kl
2 973 1122 uu
예가 명확하지 않지만 하위의 새 그룹이 무엇을 의미합니까? 정확하게 id가 변경되어야하는 newtable 예제에 레코드를 추가하십시오. – San
예, 사실입니다. 기록을 더 추가했습니다. (newtable에서 MAX_VAL을 선택하십시오) AS ID (main NVIDEL (MAX (newtable.ID), 0) +1에서 MAX_VAL FROM newtable) 메인에서와 동일한 ID를 사용하지만 이것은 하나입니다 가능한 한 id에서 1부터 시작하고 싶습니다. – user1416776
내 대답을 참조하십시오. – San