테이블 이름 : SACCT
CO_CD, --키열,널 비허용, 기본값 없음, 회사코드
ACCT_CD, --키열,널 비허용, 기본값 없음,계정과목 코드
ACCT_NM, --널 비허용, 기본값 없음,계정과목 명
이런 구조의 테이블이 있습니다
대충 내용이 아래같은데
CO_CD ACCT_CD ACCT_NM
0000 10100 현금
0000 10200 당좌예금
1000 10300 제예금
1000 10301 보통예금
2000 10302 외화예금
2000 10400 기타제예금
3000 10500 정기예적금
3000 10600 기타단기금융상품
4000 10700 유가증권
4000 10800 외상매출금
회사마다 있는 계정이 있고 없는 계정이 있습니다
그래서 있는 계정은 업뎃을 이용해서 덮어씌우기를 했는데..
----------------------이것도 제가 작성한게 아니라 지인에게 부탁해 받아서 개조한거라..
DECLARE db_cursor CURSOR FOR Select * from [DZICUBE].[dbo].[SACCT] where CO_CD=5000;
DECLARE @ACCT_CD nchar(100);
DECLARE @ACCT_NM nchar(100);
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @ACCT_NM;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE [DZICUBE].[dbo].[SACCT] SET
ACCT_NM=@ACCT_NM
WHERE CO_CD=1000 AND ACCT_CD=@ACCT_CD
FETCH NEXT FROM db_cursor INTO @ACCT_NM;
END;
CLOSE db_cursor;
DEALLOCATE db_cursor;
------------------
기준이 되는 5천번 회사에는 계정이 있는데
덮어씌울 회사엔 해당 키값이 없어서 덮어씌우질 못하고 있습니다.
업뎃후 없는것만 찿아서 비교하자니 당췌 어떻게 해야할지도 모르겠구[사실 이방법이 제일 안전한 방법이긴 한데..]
그래서 아예 방법을 달리 생각해봤는데
대상 회사의 테이블을 전부 날린다음 [사실 이방법은 쓰고싶지 않은데..]
원본 회사의 테이블을 복사한후 회사코드만 바꿔치기해서 붙여넣는다를 할려 했더니...
회사코드만 바꿔서 넣기하는 방법을 모르겠어요 ㅜ
아니면 다른 좋은 방법 있으면 알려주세요
복사할려하는 회사가 한두개가 아니라 6개도 넘어서..
--- 대충 아래같은 테이브
CREATE TABLE `tbl0` (
`co` INT(11) UNSIGNED NOT NULL,
`ac` INT(11) UNSIGNED NOT NULL,
PRIMARY KEY (`co`, `ac`)
);
INSERT INTO tbl0 (co,ac) VALUES
(1000,1000),
(1000,1001),
(1000,1002),
(1000,1004),
(1000,1005),
(1000,1006),
(5000,1000),
(5000,1002),
(5000,1003),
(5000,1005),
(5000,1006),
(5000,1007);
------------------------------
Comment 1
-
항해자™
2014.10.13 17:15
declare @vTargetNo int = 1000--먼저 아래 쿼리로 기준 으로 대상에 모두 update.update aset a.ACCT_FG = b.ACCT_FG, a.ACCT_FG = b.ACCT_FGfrom [DZICUBE].[dbo].[SACCT] as ainner join[DZICUBE].[dbo].[SACCT] as bon b.ACCT_CD = a.ACCT_CDwhere a.CO_CD = @vTargetNoand b.CO_CD = 5000go-- 대상이 없는 값은 아래 쿼리로 넣기 (컬럼 순서에 맞게 select 절에 나열하세요)insert into [DZICUBE].[dbo].[SACCT]select @vTargetNo, a.ACCT_CD, a.ACCT_FG, 나머지 컬러들...from [DZICUBE].[dbo].[SACCT] as aleft outer join[DZICUBE].[dbo].[SACCT] as bon b.ACCT_CD = a.ACCT_CDand b.CO_CD = @vTargetNowhere a.CO_CD = 5000and b.CO_CD is nullgo