查询提供所有需要从历史表生成最新记录的记录。

问题描述 投票:0回答:1

需要从历史表中获取最新记录,同时与表连接。

enter image description here

当我用下面的方法进行查询时,需要从历史表中获取最新的记录

select * from Product, ProductHistory where Product.ProductNo=ProductNo.ProductNo

它给出了所有的记录,我需要的是ProductHistory表中的最新记录。

sql join inner-join
1个回答
1
投票

未经测试

我是这样做的。

先用一个子查询来获取每个产品的 "最新 "日期。

select ProductNo, max(Date)
from ProductHistory
group by ProductNo

然后,你必须把这个结果加入ProductHistory表,得到相应的 "交易"。

select PH.ProductNo, PH.Transaction, PH.Date
from (
   select ProductNo, max(Date)
   from ProductHistory
   group by ProductNo
) MaxPH
inner join ProductHistory PH
   on PH.ProductNo = MaxPH.ProductNo
   and PH.Date = MaxPH.Date

最后,加入Product表,得到Product(名称)

select P.Product, P.ProductNo, PH.Transaction, PH.Date
from (
   select ProductNo, max(Date)
   from ProductHistory
   group by ProductNo
) MaxPH
inner join ProductHistory PH
   on PH.ProductNo = MaxPH.ProductNo
   and PH.Date = MaxPH.Date
inner join Product P on P.ProductNo = PH.ProductNo

你也可以用带分区的行号来寻找 "最新的"。

© www.soinside.com 2019 - 2024. All rights reserved.