2011-05-12 83 views
0

我有兩個表是這樣的: -如何提取最新的記錄

表A

ITEM LOCATION CODE 
A  WHS   QW123 
B  WHS   QW124 
C  WHS   QW125 

表B

ATR_NO   ITEM CODE ATT_ID ATT_VALUE 
20110101123310 A QW123 SIZE 24 
20110101123310 A QW123 GRADE 2 
20110101123351 B QW124 SIZE 20 
20110101123351 B QW124 GRADE 3 
20110101124042 C QW125 SIZE 26 
20110101124042 C QW125 GRADE 4 
20110101131210 A QW123 SIZE 26 
20110101131210 A QW123 GRADE 1 
20110101144542 C QW125 SIZE 27 
20110101144542 C QW125 GRADE 1 
使用SQL shold這個樣子

的預計業績: -

結果

ITEM LOCATION CODE SIZE GRADE 
A  WHS   QW123 26 1 
B  WHS   QW124 20 3 
C  WHS   QW125 27 1 

我該如何做到這一點?

+2

哪裏'GRADE'從何而來? – Oded 2011-05-12 05:09:53

+0

GRADE來自表B – Bob 2011-05-12 05:16:55

+1

TableB中的行如何排序?你在那張桌子上有日期/時間戳嗎?一個順序的ID或東西? – 2011-05-12 05:19:07

回答

1

獲取最新ATR_NO每個項目,攜手與表B兩次獲得規模和檔次:

select 
    a.ITEM, a.LOCATION, a.CODE, SIZE = b1.ATT_VALUE, GRADE = b2.ATT_VALUE 
from 
    [TABLE A] a 
    inner join (select max(ATR_NO) from [TABLE B] group by ITEM) i on i.ITEM = a.ITEM 
    inner join [TABLE B] b1 on b1.ATR_NO = i.ATR_NO and b1.ATT_ID = 'SIZE' 
    inner join [TABLE B] b2 on b2.ATR_NO = i.ATR_NO and b2.ATT_ID = 'GRADE' 
order by 
    a.ITEM 
+0

錯誤消息: - 錯誤:SQL0104 - 令牌=無效。有效令牌:+ - AS 。 (狀態:37000,本機代碼:FFFFFF98) – Bob 2011-05-12 05:47:16

+0

@Bob:你在使用什麼數據庫系統? – Guffa 2011-05-12 05:54:32

+0

IBMDA400 DB .... – Bob 2011-05-12 06:05:04