2011-03-21 9 views
0

하나의 통합 보고서를 생성하려면이 쿼리를 20 개 데이터베이스에서 실행해야합니다. 나는 전에 이것을 UNION으로 해왔다. 각 하위 쿼리에 대해 WITH 문을 다시 사용할 수 있습니까? 이전 문이 세미콜론으로 끝나야한다는 오류가 나타납니다. 이 일을하는 더 좋은 방법이있을 수 있을까요?WITH 문을 사용하는 SQL UNION

WITH 
DUPS (DocNum) 
AS (
    SELECT DocNum 
    FROM Akron.dbo.PWZ3 
    INNER JOIN Akron.dbo.OPWZ T5 ON T5.IdNumber = PWZ3.IdEntry 
    WHERE T5.PmntDate = '3/10/2011' 
    GROUP BY DocNum 
    HAVING COUNT(1) > 1; 
) 
SELECT PWZ3.IdEntry, PWZ3.DocNum, 'ARK' + PWZ3.CardCode, QUOTENAME(CardName,'"'), 
Convert(Decimal(10,2),PayAmount), Convert(Decimal(10,2),InvPayAmnt), 
CONVERT(VARCHAR(10), T5.PmntDate,101), NumAtCard, PymMeth, ObjType 
FROM Akron.dbo.PWZ3 PWZ3 
INNER JOIN DELAWARE.dbo.OPWZ T5 ON T5.IdNumber = PWZ3.IdEntry 
LEFT JOIN Dups ON DUPS.DocNum = PWZ3.DocNum 
WHERE T5.PmntDate = '3/10/2011' 
AND T5.Canceled = 'N' 
AND Checked = 'Y' 
AND Dups.DocNum is null 

답변

0

WITH 문은 쿼리 AS 절이 Common Table Expression (CTE)는 내 발현 것을 나타낸다.

CTE를 사용하는 쿼리를 두 개 이상 쓸 수 있는지 묻는다면 대답은 '아니오'입니다. 가장 가까운 근사값은 인라인 table-valued function을 생성하는 것입니다.

(일반 테이블 값 함수와 인라인 테이블 값 함수의 간단한 정의는 인라인 버전이 CTE와 마찬가지로 쿼리로만 정의되므로 함수 내에서 절차 작업을 수행 할 수 없습니다 선언/할당 변수 포함). 나를 위해

0

다음 작품 :

 
WITH stuff AS (
    ... some select 
) 
SELECT some_col 
FROM some_table 
    JOIN stuff ON ... 
UNION ALL 
SELECT other_col 
FROM other_table 
    JOIN stuff ON ... 

는 PostgreSQL을, 오라클

에서 테스트