2011-05-12 57 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