2016-06-01 5 views
0

Ich versuche, die folgende Abfrage zu kombinieren:Kombinieren Sie die Ergebnisse von zwei Abfragen. Muss sortieren, bevor Vereinigung mit

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; 

Offensichtlich ist ein UNION ALL auf diesem mit der order by Klausel in Konflikt geraten wird. Letztendlich muss ich jede Tabelle sortiert haben, bevor ich den ersten Eintrag auswähle. Sobald der Eintrag ausgewählt wurde, möchte ich alle Post-Sortier-Einträge zu einem einzigen Ergebnis kombinieren.

Wie kann ich das erreichen?

+0

Sie konnten die TOP-Abfrage in der FROM-Klausel tun (zB '[Datum] SELECT FROM (TOP 1 [DATUM] SELECT ....) T UNION ALL ....' – ZLK

Antwort

0

Sie könnten so etwas tun. Sie möchten grundsätzlich, dass die Tabellen, die in der Sortierung am höchsten sind, die niedrigste Tabellennummer haben. Beachten Sie, dass die Art geschieht eigentlich nach dem union, aber es wird genau die gleiche Sache, so lange erreichen, wie die tblNumbers korrekt sind.

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

Wie wäre es mit Klammern? Na ja, eigentlich mit einer Unterabfrage:

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; 

Sie können eine zusätzliches order by an die äußeren Abfrage hinzufügen, wenn Sie möchten.

+1

Das ist es! Das tat genau das, was Ich brauchte. Am meisten geschätzt! – stephen

Verwandte Themen