2017-06-09 25 views
-1

IDフィールドを使用してTableAをTableBと結合するMSSQLクエリを作成するにはどうすればNumber列の値が最も高いIDレコードに結合しますか?条件付きテーブルの結合

TableA 
ID 
1 
2 
3 
4 

TableB 
ID Number 
1 1 
1 2 
1 3 
2 1 
3 1 
3 2 
4 1 
4 2 
4 3 

私の出力

TableJoined 
ID Number 
1 3 
2 1 
3 2 
4 3 

がこのまたはMAXを(使用を達成するためにJOINをLEFTを使用する方法がありますように私は)これをしたいですか?

+0

あなたの現在のSQLコードは何ですか? –

+0

あなたが望むものについて考えてみてください。なぜあなたはまったく参加する必要がありますか? TableBには、もともと内部結合を使用する場合に必要なものがすべてあります。 – SMor

+0

TableAに '5'がある場合、出力に' ID:5 Number:0'がありますか? – Arulkumar

答えて

1

あなたは以下のように問い合わせることができます:

Select a.Id, Number from #a a join 
(
    Select top(1) with ties * from #b 
    order by row_number() over(partition by id order by number desc) 
) b on a.id = b.id 
+0

私はあなたの答えに行ったので、私は集計の問題に遭遇しなかったので。 – qroberts

0
Select A.Id, Max(Number) MaxNo from A 
join B on A.Id=B.Id 
Group by A.Id 
3

両方。左結合で集約を使用します。

Select t1.id, max(t2.number) 
From table1 t1 
Left join table2 t2 on t1.id= t2.id 
Group by t1.id; 
-1
create table #a(
id int 
) 
go 
create table #b(
id   int, 
number  int 
) 
go 

insert into #a values(1),(2),(3),(4) 

insert into #b values(1,1),(1,2),(1,3),(2,1),(3,1),(3,2),(4,1),(4,2),(4,3) 


select #b.id,MAX(number) as maximum 
from #b left outer join #a on #b.id=#a.id 
group by #b.id