조건에 따른 결과값 도출 0 3 647

by dnfrkwhr [Oracle 기초] [2019.03.08 18:20:57]


이름 구분
A 31 10
B 32 10

위와 같은 테이블이 있을경우, 코드 값에 따른 결과를 아래와 같이 얻고자 합니다.

이름 구분
A 31 10
B 31 10
B 32 10

즉, 위 3행에 보시면 이름B에 대해 구분값 31을 가진 행이 추가되었습니다. 예를 들어, 코드가 1이면 B가 구분값 31을 가진 행이 한줄 더 늘어나 위의 테이블과 같이 결과가 나와야 합니다. (코드값1에 A는 해당이 안되어 위와 같이 한행이며, 해당되는 B만 한행이 더 늘어납니다.)

 

 

by 우리집아찌 [2019.03.08 18:25:44]
--  내용은 이해안가지만..
WITH T ( NM , GB , VAL )  AS ( 
SELECT 'A' ,31 , 10 FROM DUAL UNION ALL
SELECT 'B' ,32 , 10 FROM DUAL
)

SELECT A.NM , B.GB , A.VAL 
  FROM T A 
     ,(SELECT GB FROM T  ) B
 WHERE B.GB <= A.GB    
 ORDER BY A.NM , B.GB

 


by inbeater [2019.03.08 18:50:38]

 
MERGE INTO T1 S

    USING DUAL

       ON (s.이름 !=  :code)

    WHEN NOT MATCHED THEN

        INSERT (S.이름, S.구분, S.값)

        VALUES (select * 
                from (select *
                      from t1
                      where t1.이름 = :code
                      order by 1)  
                where rownum =< 1)

1 = b 로 변환한걸 바인드 변수로 넣은걸 가정 했을 때 merge into문은 이렇게 사용하면 도움이 되지 않을까 합니다.


by 마농 [2019.03.12 08:35:20]

질문을 정확하게 이해하기 힘드네요.
코드가 1이면? 이란 표현을 썼는데? 샘플에 코드는 안보이네요?

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입