2016-04-19 6 views
0

Ich habe eine Abfrage, die Union von 3 Comples Abfragen ist. Einige Sache wie untenOracle oberste Zeile von Union von Abfragen

SELECT 'type_one' as typename, typeid, typetitle from abc, def 
UNION 
SELECT 'type_two' as typename, typeid, typetitle from xyz, pqr 
UNION 
SELECT 'type_three' as typename, typeid, typetitle from mno, ijk 
order by date desc 

Diese obige Abfrage sagen, gibt 15 Datensätze, sortiert nach Datum desc. Ich möchte den Datensatz mit "type_two" und dem letzten Datum immer als erste Zeile abrufen (es kann mehr als eine Zeile mit "type_two" geben) und dann den Rest der Datensätze nach date desc sortieren. Kann jemand bitte einen Weg zeigen, dies in Oracle zu tun? danke

Antwort

1

eine CASE verwenden, um verschiedene Gewichte auf die gewünschten Spalten

SELECT 'type_one' as typename, typeid, typetitle from abc, def 
UNION 
SELECT 'type_two' as typename, typeid, typetitle from xyz, pqr 
UNION 
SELECT 'type_three' as typename, typeid, typetitle from mno, ijk 
order by CASE WHEN typename='type_two' THEN 0 ELSE 1 END,date desc 
+0

Dies gibt ein Ergebnis aller Datensätze mit type_two auf der Oberseite, und dann den Rest unten zu geben. Ich brauche nur 1 Datensatz mit type_two als 1. Datensatz, und der Rest sollte die Mischung aller Typen nach Datum sortiert sein .. Hoffe das ist klar. danke – user747291

+0

Irgendwelche Ideen, wie ich das bitte tun kann? – user747291

Verwandte Themen