2011-10-16 16 views
6

utilizza SQL ServerCome per ottenere il valore massimo da 2 tavoli

voglio ottenere il valore massimo da due tavoli

Table1

ID Total 

101 100 
102 600 
..... 

Table2

ID Total 

101 300 
102 400 
.... 

voglio ottenere un valore massimo dalla tabella 2 secondo l'id

Output previsto

ID Total 

101 300 (max value in table2) 
102 600 (max value in table1) 
.... 
... 

Come fare una query

bisogno Query Aiuto

risposta

9
SELECT 
    ID, MAX(Total) 
FROM 
    (
    SELECT ID, Total FROM Table1 
    UNION ALL 
    SELECT ID, Total FROM Table2 
    ) foo 
GROUP BY 
    ID 
2
; with 
q_00 as (
select id, Total from Tbl_1 
union all 
select id, Total from Tbl_2 
) 
select id, max(Total) 
from q_00 
group by id 
order by id ; 
1

Un altra opzione da prendere in considerazione potrebbe essere

WITH T(ID, Total) 
    AS (SELECT ID, 
       MAX(Total) 
     FROM Table1 
     GROUP BY ID 
     UNION ALL 
     SELECT ID, 
       MAX(Total) 
     FROM Table2 
     GROUP BY ID) 
SELECT ID, 
     MAX(Total) AS Total 
FROM T 
GROUP BY ID 

Se ID,Total è indicizzato nelle due tabelle forse questo potrebbe dare un piano migliore (non testato)

+0

Anche se ora testato e la differenza tra i due è piuttosto marginale e può essere asimmetrica in entrambi i modi, regolando il numero di righe 'Totale' in ciascuno ' Gruppo ID'. –

Problemi correlati