2016-04-27 5 views
0
select max(some_column1), some_column2 from(
    select distinct some_column1, some_column2 from table1 where some_column1 = (select max(some_column1) from table1) 
    union all 
    select distinct some_column1, some_column2 from table2 where some_column1 = (select max(some_column1) from table2) 
    union all 
    select distinct some_column1, some_column2 from table3 where some_column1 = (select max(some_column1) from table3) 
) as max_result 

Diese Abfrage tut genau das, was ich will. Das einzige Problem ist, wenn ich das maximale Ergebnis von some_column1 bekomme, möchte ich auch some_column2, die max (some_column1) entspricht. Stattdessen bekomme ich 3 Ergebnisse. Ich muss es auf ein Ergebnis beschränken. some_column2 muss aus der gleichen Tabelle wie max (some_column1) sein. Gibt es dazu neben dem Speichern des Ergebnisses in einer temporären Tabelle? Alle Hilfe wird geschätzt. Danke im Voraus!Wie wählen Sie mehrere Spalte mit einer Spalte ist max() aus mehreren Tabellen

Antwort

1

Ich denke, der einfachste Weg ist nach Some_column1 zu sortieren und die erste Zeile zu nehmen. Dies wird die Zeile erhalten, in der some_column1 den größeren Wert hat und immer noch Zugriff auf some_column2 hat.

Versuchen:

select top 1 some_column1, some_column2 from(
    select distinct some_column1, some_column2 from @table1 where some_column1 = (select max(some_column1) from @table1) 
    union all 
    select distinct some_column1, some_column2 from @table2 where some_column1 = (select max(some_column1) from @table2) 
    union all 
    select distinct some_column1, some_column2 from @table3 where some_column1 = (select max(some_column1) from @table3) 
) as max_result 
order by some_column1 desc 
1

geben diesem einen shot..Its etwas verworren ... aber sollte work..If es einen Gleichstand in Max-Werte, und Sie möchten, dass alle dann, dann ersetzen Sie einfach den = Check in where-Klausel mit IN

select max_result.some_column1,max_result.some_column2 from (
    select distinct some_column1, some_column2 from table1 where some_column1 = (select max(some_column1) from table1) 
    union all 
    select distinct some_column1, some_column2 from table2 where some_column1 = (select max(some_column1) from table2) 
    union all 
    select distinct some_column1, some_column2 from table3 where some_column1 = (select max(some_column1) from table3) 
) max_result 
where max_result.some_column1 = 
(select max(some_column1) from 
(
    select distinct some_column1, some_column2 from table1 where some_column1 = (select max(some_column1) from table1) 
    union all 
    select distinct some_column1, some_column2 from table2 where some_column1 = (select max(some_column1) from table2) 
    union all 
    select distinct some_column1, some_column2 from table3 where some_column1 = (select max(some_column1) from table3) 
))