수고 하십니다 ^^;지난번 질문에 대한 답변으로 큰 도움이 돼었습니다
이번엔 질문하기가 좀 어려워서 어떻게 글을 써야할지 약간은 당황스러운데요...
제목처럼 syscolumns 에서 얻어온 필드명에다 data를 넣을려고 합니다 입력 할 테이블의 필드명이trg_01, trg_02 .....이런식으로 되어있고요검색해서 합을 구하는 테이블의 필드명이src_01, src_02 ....이렇게 되어있습니다
소스 테이블 필드들의 합계를 구해서 타겟 테이블의 특정필드(syscolumns로 얻어온 필드명)에 넣을려고 합니다
SELECT c.nameFROM syscolumns AS c, (SELECT id FROM sysobjectsWHERE name = 'target_table') AS ttWHERE tt.id = c.id AND c.name = 'trg_' + @arg이렇게 얻어온 필드명(문자열로 되어있습니다)을 가지고 더이상 진전이 없어서 이렇게 글을 올립니다
얻어온 필드명은 문자열인데 어떻게 이 타겟 테이블의 필드로 data를 집어 넣을 수 있을까요...명쾌한 답변 부탁 드립니다..그럼 즐거운 하루 되세요
요구하신 내용을 잘 몰라 나름대로 해석하여 답변을 씁니다.
a 라는 테이블에 b 라는 테이블의 자료를 모두 넣는데 조건은 동일한 column에 각각의 자료를 넣게 다는 것이죠. 그런데 column의 수도 확실하지 않고, 그리고 각각의 column 명이 다르다는 것이 문제가 아닌가요. 대신 column명에 조건이 있어 조건을 이용하는 점이 관건이라는 것인것 같아 커서 를 이용한 방법을 씁니다.
declare @sql_query varchar(200)
declare c_tempfor select a.name from syscolumns a, sysobjects b where b.name = 'target_table' and a.id = b.id and c.name like 'trg_%'
open c_temp
@sql_query = 'insert target_table valuse trg_' + right(rtrim(c_temp), 2) + ' = a.arg_' + right(rtrim(c_temp), 2) +
'from data_table a'
exec @sql_query
close c_temp
deallocate c_temp
제가 질문한 내용과 답변의 차이가 쫌 크지만
답변해주신 방법을 보고 해결책을 찾았네요
그리고 제 질문 내용을 요약하면
변수에 들어있는 문자열이 필드명과 같거든요
그래서 문자열을 실제 필드명처럼 사용 할 수는 없을까 하고
질문한 것이지요..
답글 내용처럼 커서를 이용하면 되겠네요..
답글 감사합니다..
즐거운 주말 보내세요..