2011-10-16 40 views
6

pomocą SQL ServerJak uzyskać wartość max z 2 tabel

Chcę uzyskać wartość max z dwóch tabeli

Table1

ID Total 

101 100 
102 600 
..... 

Table2

ID Total 

101 300 
102 400 
.... 

chcę uzyskać maksymalną wartość z 2 tabeli zgodnie z identyfikatorem

Oczekiwany Wyjście

ID Total 

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

Jak zrobić kwerendę

Need Zapytanie Pomoc

Odpowiedz

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

Jedna inna opcja warta rozważenia może być

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 

Jeśli ID,Total jest indeksowany w dwóch tabelach, co może dać lepszy plan (nietestowany).

+0

Chociaż teraz testowany, a różnica między nimi jest dość marginalna i może być przekręcona w dowolny sposób, zmieniając liczbę wierszy "Łącznie" w każdym z nich. Grupa ID. –

Powiązane problemy