즉, 위 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() 버튼을 클릭하여 작성 하시면 됩니다.