with절 union all절을 같이 쓸수는 없는건가요? 0 6 12,037

by 손님 [Oracle 기초] [2010.11.24 10:24:32]



안녕하세요?

WITH절을 이용한 SQL문을 UNION ALL로 묶으면 에러가 나더라구요?
방법이 있을까요?

자꾸 에러가 나서 아래 예제와 같이 짧게 해봐도 에러가 나더라구요?
물론 실제 쿼리문을 아래 예제보다 길구요...

with A as (select '가상' a from dual),
  B as (select '가상' b from dual)
select  A.a,B.b from A, B
 WHERE A.a = B.b    
  
union all
with A as (select '가상' a from dual),
  B as (select '가상' b from dual)
select  A.a,B.b from A, B
 WHERE A.a = B.b

지원되지 않는 WITH절 사용이라는 에러가 뜹니다.
방법이 있을까요?
by v상이v [2010.11.24 10:38:35]
with A as (select '가상' a from dual),
B as (select '가상' b from dual)

select A.a,B.b from A, B
WHERE A.a = B.b

union all

select A.a,B.b from A, B
WHERE A.a = B.b


by 손님 [2010.11.24 10:43:38]
답변 감사드립니다. 저도 위와 같은 쿼리는 생각은 해보았으나,
원본 쿼리는 여러 테이블들이 짬뽕 되어 있고 DB 유저가 틀린것 끼리
한꺼번에 보는 현황을 작성해야 해서 다른 수정없이 전체를 UNION ALL로 묶을 생각을 한거거든요.

by v상이v [2010.11.24 10:48:08]
With 절은 따로 선언을 하신거라 SELECT 절과는 별개입니다.
위에 나열하신 사용법은 잘못된 거구요...
만약 위에 적어놓은 with절이 위,아래 각각 별개의 테이블이라면
with a AS (select...)
,b AS (select...)
,c AS (select...)
,d AS (select...)

로 다 나열하시고
쿼리문...select 문을 union 하셔야죠~~


by 마농 [2010.11.24 11:31:25]
-- select로 한번 감싸세요
SELECT * FROM
(
WITH a AS (SELECT * FROM dual) SELECT * FROM a
)
UNION ALL
SELECT * FROM
(
WITH a AS (SELECT * FROM dual) SELECT * FROM a
)
;

by 손님 [2010.11.24 11:36:46]
헉!! 감솨드립니다^^ 이렇게 간단히 해결되나니 ㅋㅋ
역시 사람은 알아야 하네요,,

상이님, 마농님 감사드립니다!!~

by v상이v [2010.11.24 11:45:20]
W_작지 AS (
SELECT 품번 FROM ubishirts.영업작지마스터 작지 WHERE 차수 = '01'
UNION ALL
SELECT 품번 FROM ubibon.영업작지마스터 작지 WHERE 차수 = '01'
)

이런식으로 하셔도 대요...
유저명으로 분기 되는 부분을 아예 union 으로 합쳐서 가져오시면...
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입