我有一张这样的表:
Item Serial_No Grade Size Location Date
CQ35 A243911 4 36 A 20110127
CQ35 A243911 4 36 B 20110329
CQ35 A243911 4 36 C 20110330
CQ38 A244567 3 38 A 20110127
CQ35 A244567 3 38 B 20110128
CQ38 A244567 3 38 C 20110129
CQ35 A244567 3 38 D 20110130
CQ40 A244568 3 41 A 20110127
CQ40 A244568 3 41 B 20110129
CQ36 A244570 2 37 A 20110125
预期的结果shd看起来像使用SQL:
Item Serial_No Grade Size Location Date
CQ35 A243911 4 36 C 20110330
CQ35 A244567 3 38 D 20110130
CQ40 A244568 3 41 B 20110129
CQ36 A244570 2 37 A 20110125
我正在尝试提取每个序列号的最新行。
谢谢
答案 0 :(得分:2)
更新:日期
select *
from table as outertable
where date = (select max(date) from table where Serial_No = outertable.Serial_No)
这里的诀窍是仅在Serial_No范围内进行比较,实现此目的的方法是使用此处所示的Correlated Subquery。
答案 1 :(得分:0)
这假设每个日期和序列号只有一个条目。
SELECT MyTable.*
FROM MyTable
INNER JOIN (SELECT SerialNo, MAX(Date)
FROM MyTable
GROUP BY SerialNo) AS MyTableLatest ON MyTable.SerialNo = MyTableLatest.SerialNo
AND MyTable.Date = MyTableLatest.Date
答案 2 :(得分:-1)
这样的事情:
SELECT *
FROM table
WHERE Date
IN (
SELECT MAX( Date )
FROM table
GROUP BY Serial_No
)