2013-10-17 9 views
11

Ich habe die folgende Tabelle:für jede Zeile von einer anderen Tabelle

  Table1       Table2   
CardNo ID Record Date   ID Name  Dept  
1  101 8.00 11/7/2013  101 Danny  Green 
2  101 13.00 11/7/2013  102 Tanya  Red 
3  101 15.00 11/7/2013  103 Susan  Blue  
4  102 11.00 11/7/2013  104 Gordon Blue  
5  103 12.00 11/7/2013     
6  104 12.00 11/7/2013     
7  104 18.00 11/7/2013     
8  101 1.00 12/7/2013     
9  101 10.00 12/7/2013     
10  102 0.00 12/7/2013     
11  102 1.00 12/7/2013     
12  104 3.00 12/7/2013     
13  104 4.00 12/7/2013 

Ich mag das Ergebnis so sein:

Name Dept Record 
Danny Green 8.00 
Tanya Red  11.00 
Susan Blue 12.00 
Gordon Blue 18.00 

, wo das Ergebnis nur das zeigt, Mindestwert von "Record" für jeden "Name" und gefiltert nach dem ausgewählten Datum. Ich benutze SQL.

+0

min (record) aus der Tabelle whlen date = 'wateverdate' group by name? – zxc

Antwort

17

Verwendung:

select t2.Name, t2.Dept, min(t1.Record) 
from table1 t1 
join table2 t2 on t2.ID = t1.ID 
group by t2.ID, t2.Name, t2.Dept 

oder

select t2.Name, t2.Dept, a.record 
from table2 t2 
join 
(
    select t1.ID, min(t1.Record) [record] 
    from table1 t1 
    group by t1.ID 
)a 
on a.ID = t2.ID 

Abfrage zu filtern, fügen where Klausel, z.B .:

select t2.Name, t2.Dept, min(t1.Record) 
from table1 t1 
join table2 t2 on t2.ID = t1.ID 
where t1.Date = '11/7/2013' 
group by t2.ID, t2.Name, t2.Dept 
+2

Erste eine korrekt zu posten. –

1

Bitte versuchen:

Select 
    b.Name, 
    b.Dept, 
    MIN(Record) Record 
from 
    Table1 a join Table2 b on a.ID=b.ID 
GROUP BY b.Name, 
    b.Dept 
+0

OP fragte nach MIN, nicht nach SUMME. –

+1

@Doug_Ivison Ja! Es tut uns leid. Danke – TechDo

+0

Kirill, könnten Sie vielleicht etwas mehr Syntax hinzufügen, um nur das 'Datum' auszuwählen, das ich möchte? Beispiel: where date = '11/7/2013 ' – wood

0
select 
     b.Name, 
     b.Dept, 
     min(a.Record) 
from Table1 a,Table2 b 
where 
     a.ID=b.ID 
group by 
     a.Record 
+1

Die Gruppe von enthält die Spalten, die * NOT * in Aggregatfunktionen sind, also: 'group by b.Name, b.Dept' –