쿼리 결과를 새로운 테이블로 생성하려면... 0 9 465

by OYS [SQLServer] [2024.11.27 11:21:43]


with temp7 as 

(

select ....

from ....

where ...

)

select *

from temp7

where ...

이 쿼리를 실행한 후 나온 결과를 새로운 테이블로 만들고 싶은데 어떤 방법이 있는지요..

------------------------------------------------

찾아보니 SELECT * INTO 문을 사용하면 될 것 같아

select * into temp8 from (select * from temp7) 

이렇게 작성해봤는데 에러가 발생하는 상황입니다. 

 

 

by 쏭지 [2024.11.27 12:44:07]
SELECT [삽입할 컬럼1], [삽입할 컬럼2] ... 
INTO [#임시 테이블명]
FROM [데이터를 가져올 테이블명]
 
with temp7 as
(
select ....
from ....
where ...
)
select *
into #TEMP_TABLE
from temp7
where ..
 
 
SELECT *FROM #TEMP_TABLE
DROP TABLE #TEMP_TABLE - 반드시 원테이블이 아닌 임시테이블 DROP

by 마농 [2024.11.27 13:19:08]

에러메시지 확인하세요.
에러메시지 속에 답이 있습니다.


by 마농 [2024.11.27 13:56:01]

select * into temp8 from (select * from temp7)
<-- 이게 다 인건가요? 뭔가 부족해 보이는데
몇가지 에러 가능성이 보입니다.
1. temp7 이 있는가? WITH 문 없이 가능한 것인지?
2. 인라인뷰에 알리아스 필수입니다. 괄호 뒤 알리아스 지정 필수


by OYS [2024.11.27 15:27:27]

with 문을 사용한 이유는 

첫 번째 select문을 작성할 때 기존변수에는 없는 파생변수를 생성하였고

그 파생변수를 사용해서 특정조건을 조회를 할 필요가 있었기에

with 구문을 사용했습니다. 

* 제가 잘못알고 있는것인지는 모르겠으나, MS SQL의 경우 파생변수로 특정조건을 조회할 필요가 있는경우

with 구문을 사용해야하는걸로 알고 있습니다. 

* temp7이 있는가? 라는 의미를 잘 모르겠습니다. 저는 결론적으로 제가 위에 작성한 with 구문을 실행시켜

원하는 결과를 추출한 상태입니다. 

 


by OYS [2024.11.27 15:29:17]

말씀해주대로 아래와 같이 알리아스를 지정 후 

select * into  ~ from temp7) A
 

with 부터 A까지 전체를 블록을 잡고 결과를 실행해봤는데 에러메세지가 발생하고 있는 상황입니다.

에러메세지 : 개체 이름 'temp7'이(가) 유효하지 않습니다.

말씀해주신대로 temp7이 문제인것 같은데, 어떤 식으로 구문을 수정하면 될지 감이 오지를 않습니다...
 


by 마농 [2024.11.27 15:45:04]

1. with 문은
- 해당 기능이 필요할 때 사용하는 것일 뿐 (인라인뷰와 유사한 기능)
- 반드시 사용해야 할 의무사항 같은 것이 있는게 아닙니다. (인라인뷰로 대체 가능)
2. temp7 은
- with 문에서 정의한 집합의 명칭인데
- with 문 없이 그냥 temp7 을 사용하면 당연히 안되겠지요.
- with temp7 AS (...) select * from temp7; <-- 정상
- select * from temp7; <-- 오류


by 우주민 [2024.11.27 14:07:48]
insert into 임시테이블
with temp7 as 
(
select ....
from ....
where ...
)
select *
from temp7
where ...

아마 이런 형식을 원하신건 아닐지....

 

with temp7 as
(
select ....
from ....
where ...
)
insert into 임시테이블
select *
from temp7
where ...

db에 따라 이렇게 해야 할 수도....


by OYS [2024.11.27 15:08:43]

두가지 모두 안되네요...ㅎㅎ

그래도 답변주셔서 감사드립니다. 


by 우주민 [2024.11.27 16:44:27]
select * into 임시테이블
from (
select ....
from ....
where ...
) t1
where ...

with 문이 문제라면 이런 쿼리는 어떤가요?

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