2016-10-14 4 views
0

다음과 같은 sql 쿼리가 있다고 가정합니다.하위 선택 쿼리에서 select ... else select ... 문 사용

DECLARE @Date1 datetime = (SELECT TOP 1 Date FROM Table1 ORDER BY Date) 
DECLARE @Date2 datetime = (SELECT  Date FROM Table2 WHERE Status = 'xxx') 

IF @Date1 >= @Date2 
    SELECT Column1, Column2 From Table3 
ELSE 
    SELECT Column1, Column2 FROM Table4 

다른 쿼리에서이 쿼리를 사용할 수 있습니까? 이 쿼리에서이 결과를 다른 쿼리로 결합한 다음 그룹화 등의 선택을 수행하려면 유니온을 사용해야합니다. 그러나이 쿼리 주위에 select * from (을 래핑하면 구문 오류가 발생합니다. 작동하지만 적합하지 않습니다 내가 당신이 할 수 있다고 생각하는 더 좋은 방법

답변

2

이 있다면 궁금 해서요 제가 별도의 쿼리를 수행 한 후 결합하고 메모리 개체에 결과를 그룹화하고 순간에서

: 난 그냥 외부가 else` 해당 쿼리를 소비 할 수있는`경우 방법을 설명하기 위해 선택 추가 @brykneval

SELECT * 
FROM (
    SELECT Column1, Column2 
    From Table3 
    WHERE @Date1 >= @Date2 

UNION ALL 

    SELECT Column1, Column2 
    FROM Table4 
    WHERE @Date1 < @Date2) AS t 
+0

노조 – brykneval

+0

의 경우 상위 선택 작업 벌금을 제거하지 않을 것입니다. –