2011-10-16 25 views
6

Utilizar servidor SQLCómo logran un valor máximo de 2 tablas

Quiero obtener el valor máximo de la tabla dos

Tabla 1

ID Total 

101 100 
102 600 
..... 

Tabla 2

ID Total 

101 300 
102 400 
.... 

quiero obtener un valor máximo de 2 tabla de acuerdo con el id

Resultados previstos

ID Total 

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

Cómo hacer una consulta

Necesita Ayuda Consulta

Respuesta

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

Otra opción interesante podría ser

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 

Si ID,Total está indexado en las dos tablas, posiblemente esto podría dar un mejor plan (no probado)

+0

Aunque ahora probado y la diferencia entre los dos es bastante marginal y puede ser sesgada de cualquier manera ajustando el número de filas 'Total' en cada' ID' grupo. –

Cuestiones relacionadas