조회된 1개의 Row 를 n 개의 Row 로 입력하는 방법? 0 9 2,553

by karl [SQL Query] 차변 대변 [2009.10.13 15:17:19]


프로그래밍으로 loop 을 돌면서 물론 가능한데요^^

쿼리로도 가능할것 같아서 질문드려봅니다.

다음과 같은 2개 Rows 데이터를 다음과 같은 결과로 Insert 하고 싶습니다.

(SELECT)
WITH T1 AS
(
 SELECT 'A1' 차변, 'B1' 대변, '500' 금액 FROM DUAL UNION ALL
 SELECT 'A2' 차변, 'B2' 대변, '550' 금액 FROM DUAL
)
SELECT t1.*
FROM T1
;

(INSERT)
차변, 대변, 금액
A1, null, 500
null, B1, 500
A2, null, 550
null, B2, 550

by 에디슨 [2009.10.13 15:26:34]
WITH T1 AS
(
SELECT 'A1' 차변, 'B1' 대변, '500' 금액 FROM DUAL UNION ALL
SELECT 'A2' 차변, 'B2' 대변, '550' 금액 FROM DUAL
)
INSERT INTO 테이블
(차변,대변,금액)
SELECT 차변,대변,금액
FROM T1

by karl [2009.10.13 15:27:28]
앗;에디슨님.답변은 감사한데요;; 그건 조회한것 그냥 인서트잖아요;; 저의 질문은 그게 아닌데요;;

by finecomp [2009.10.13 15:30:46]
2row짜리 집합과 묻지마 조인 후
DECODE(구분, 1, "차변"),
DECODE(구분, 2, "대변") 처럼 나누어 insert...^^;

by bluebyte [2009.10.13 15:42:30]
ERP 에서 plsql 로 concurrent 작업하시는거면
제가 본거랑 Select 해오는 내용이 조금 다르지만,

차변 넣는 Insert, 대변 넣는 Insert 따로 만드셔서 interface Table 에 넣는 방법을 썻습니다. 커서를 사용한다는 가정하에

-- 차변 Insert
A1, null, 500
A2, null, 550

-- 대변 Insert
null, B1, 500
null, B2, 550

이렇게 들어가도록 하도록 하시면 될겁니다.

by finecomp [2009.10.13 15:52:51]
그런데 쿼리연습하시는 건가요?
Insert 하신다니 이상해서요...;
전표데이터는 이미
전표번호, 차대구분, 계정코드, 전표금액, ...
처럼 Insert할 결과와 유사하게 들어있을 텐데요...;

by 서성우 [2009.10.13 15:55:02]
WITH T1 AS
(
SELECT 'A1' a, 'B1' b, '500' amt FROM DUAL UNION ALL
SELECT 'A2' a, 'B2' b, '550' amt FROM DUAL
)
SELECT Decode(lv,1,a) 차변,
Decode(lv,2,b) 대변,
amt 금액 ,
lv
FROM T1 , (SELECT LEVEL lv FROM dual
CONNECT BY LEVEL <=2)
ORDER BY amt

by 에디슨 [2009.10.13 15:57:00]
INSERT 할때 이미 SELECT절에서 분기를 해서 INSERT시켜주면되는걸..흠

by karl [2009.10.13 16:25:26]
finecomp > 연습이예요^^ 좀 독특한거라서 말씀하신것처럼 테이블이 안생기기도 했구요^^

by karl [2009.10.13 16:36:12]
다들 감사합니다. ^^

(SELECT LEVEL lv FROM dual CONNECT BY LEVEL <=2)

요녀석 사용하니 곱이 되어 2배가 되는걸;^^;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입