Sql 为另一个表连接的每个行选择最小值
我有下表:Sql 为另一个表连接的每个行选择最小值,sql,join,group-by,multiple-tables,minimum,Sql,Join,Group By,Multiple Tables,Minimum,我有下表: 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 1
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。请尝试:
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
使用:
或
要筛选查询,请添加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
从date='wateverdate'按名称分组的表中选择min(记录)?OP要求的是min,而不是SUM。@Doug_Ivison Yeah!很抱歉ThanksKirill,您是否可以在后面添加一些语法来只选择我想要的“日期”?示例:其中日期='11/7/2013'group by包含不在聚合函数中的列,因此:
group by b.Name,b.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
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
select
b.Name,
b.Dept,
min(a.Record)
from Table1 a,Table2 b
where
a.ID=b.ID
group by
a.Record