2016-06-01 14 views
0

を使用する前に並べ替える必要があります。2つのクエリの結果を結合します。私は次のクエリを結合しようとしていますユニオン

SELECT TOP 1 [DATE] FROM [database 1].[DBO].[table1] order by DATE desc; 

SELECT TOP 1 [DATE] FROM [database 2].[DBO].[table1] order by DATE desc; 

明らかに、この上のUNION ALLorder by句と競合する予定です。 最終的には、最初のエントリを選択する前に各テーブルをソートする必要があります。エントリが選択されたら、すべてのポストソートエントリを1つの結果にまとめたいと思います。

どうすればこの問題を解決できますか?

+0

FROM句でTOPクエリを実行できます(たとえば、SELECT [日付] FROM(SELECT TOP 1 [DATE] ....)T UNION ALL .... ' – ZLK

答えて

0

あなたはこのようなことをすることができます。基本的には、並べ替えの中で最も高いテーブルが最も低いtblNumberを持つようにします。ソートは実際にはunionの後に起こっていますが、tblNumbersが正しい限り、まったく同じことが達成されます。

select * --if you don't want tblNumber returned, select all columns except tblNumber 
from 
(
    SELECT 1 as tblNumber 
    , [DATE] 
    FROM [database 1].[DBO].[table1] 
) tbl1 
union all 
(
    SELECT 2 as tblNumber 
    , [DATE] 
    FROM [database 2].[DBO].[table1] 
) tbl2 

order by tblNumber, [DATE] desc 
0

括弧を使用することはどうですか?まあ、実際にサブクエリで:あなたが好きなら

SELECT tt.* 
FROM ((SELECT TOP 1 [DATE] 
     FROM [database 1].[DBO].[table1] 
     order by DATE desc 
    ) UNION ALL 
     (SELECT TOP 1 [DATE] 
     FROM [database 2].[DBO].[table1] 
     order by DATE desc 
    ) 
    ) tt; 

あなたは、外側のクエリに追加order byを追加することができます。

+1

これはこれです!私は必要でした。 – stephen

関連する問題