2016-10-14 7 views
0

次のようなSQLクエリがあるとします。サブクエリでIf 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 

このクエリは別のクエリで使用できますか。 私はunionを使用してこのクエリの結果を別のクエリに結合し、グループ化などの選択を実行する必要がありますが、このクエリの回りにselect * from (をラップすると構文エラーが発生します。動作しますが、理想的ではないと私はあなたがこれを行うことができると思います良い方法

答えて

2

があった場合には思っていた私は、別のクエリを実行し、その後組み合わせるとメモリオブジェクトに結果をグループ化していた瞬間、時

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

@bryknevalの場合には上部選択作業罰金を除去しないだろう、私はちょうど外側は 'else'同等のクエリが消費できるかどうかを実証するために選択しました。 –

関連する問題