2013-10-17 1 views
11

によって結合を選択:各行の最小値が、私は次の表を持っている別のテーブル

  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 

私は結果は次のようになりたい:結果のみが表示され

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

「名前」ごとに「レコード」の最小値を選択し、選択した日付でフィルタリングします。私はSQLを使用しています。

+0

date = 'wateverdate' group by nameのテーブルからmin(レコード)を選択しますか? – zxc

答えて

17

用途:

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 

または

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 

where句を追加し、クエリをフィルタリングするために、例えば:

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

最初に正しく投稿する。 –

1

てみてください:

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はSUMではなくMINを求めています。 –

+1

@Doug_Ivisonうん!ごめんなさい。ありがとう – TechDo

+0

キリル、私はしたいだけの '日付'だけを選択するためのいくつかの構文を追加する可能性がありますか?例: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

グループbyは集計関数で* NOT *の列を含んでいるので、 'group by b.Name、b.Dept' –

関連する問題