2014-01-29 2 views
0

내 [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 
+0

예가 명확하지 않지만 하위의 새 그룹이 무엇을 의미합니까? 정확하게 id가 변경되어야하는 newtable 예제에 레코드를 추가하십시오. – San

+0

예, 사실입니다. 기록을 더 추가했습니다. (newtable에서 MAX_VAL을 선택하십시오) AS ID (main NVIDEL (MAX (newtable.ID), 0) +1에서 MAX_VAL FROM newtable) 메인에서와 동일한 ID를 사용하지만 이것은 하나입니다 가능한 한 id에서 1부터 시작하고 싶습니다. – user1416776

+0

내 대답을 참조하십시오. – San

답변

1

같이 공유 할 것입니다 : 절에 의해 제거 파티션을 필요가 없습니다.

+0

완벽한 !!! 고마워요 !! – user1416776

관련 문제