評價: 2 回應: 3 閱覽: 190
置頂

SQL join問題

各位大神大家好吼

今天我要用A table去 join B  table

但是我要找出B  table某個欄位最大或最小值的那一列

請問要怎麼下SQL呢?

例如用A  table的ID欄位去 join B  table的ID欄位

但在B  table的相同ID有很多列

例如ID=5可能該ID符合的有10列

我要只要MAX(PayDate)最大的那一列

而且ID是1、3、5、8、10這樣很多群組

不曉得這樣的話要怎麼取得每一個ID最大的值的那一列來join呢?

熱門回應
;with x as(select * from A),
y as (select ID,MAX(paydate) from B group by ID)
select * from x inner join y on x.ID=y.ID

你得意思應該是要這樣吧?

此問題有點奇怪,以技術上來說,要取得各組(以ID來分組)中payDate最大值是有點技巧沒錯,但是在取得ID後再去跟A Table的ID做join,那麼去選出B Table的payDate最大值的列就沒意義了。或許有誤會你的描述,所以我只寫出取出各組最大值的方式,join的部份就看你要怎麼用囉

declare @tableB table(id int,payDate smalldatetime);
insert into @tableB values(1,'2015-10-01'),(1,'2015-10-02'),(2,'2015-10-03'),(2,'2015-10-04');
select id,payDate from @tableB T where payDate=(select max(payDate) from @tableB where id=T.id);

 

A inner join t on A.ID=t.ID

Bgroup by

會員登入 (先登入會員才能回覆留言喔!)

Facebook留言