【发布时间】:2020-11-07 11:00:01
【问题描述】:
我有 2 个表要加入。一个表是库存的历史记录,它具有与每个“件”库存相关联的“最后更新”日期。另一张桌子上有每件的价格。我想加入表格,以便获得每个价格的历史记录。例如。
TABLE 1
Date Item Location QTY
06/01/2020 ABC 123 10
06/01/2020 DEF 234 12
06/02/2020 ABC 345 13
06/06/2020 ABC 123 10
TABLE 2
ITEM Price
ABC 34.5
DEF 52.12
-----------------> result table ------------------>
Date Item Location QTY Price
06/01/2020 DEF 234 12 34.5
06/02/2020 ABC 345 13 52.12
06/06/2020 ABC 123 10 34.5
结果表在哪里过滤,以便它只保留最近的记录。例如。 TABLE1 每分钟更新一次以显示新的库存水平。从表 1 处于项目/位置粒度级别的意义上说,项目 + 位置组合是“唯一的”。但是,随着表的更新和创建新条目,可以有许多相同的项目/位置组合(它是一个历史表,因此具有相同项目 + 位置组合的旧条目保留在表中)。有时日期不同,有时日期是同一天。
我写的查询是:
SELECT DISTINCT
TB1.DATE
,TB1.ITEM
,TB1.LOCATION
,TB1.QTY
,TB2.ITEM_COST
FROM
(
SCHEMA_1.TABLE1 AS TB1
JOIN SCHEMA_1.TABLE2 AS TB2
ON TB1.ITEM = TB2.ITEM
JOIN (
SELECT ITEM AS ITM,
LOCATION AS LOC,
MAX(DATE) AS MAXDATE
FROM SCHEMA_1.TABLE1
GROUP BY ITEM, LOCATION
)TB3
ON TB1.ITEM = TB3.ITM AND TB1.LOCATION= TB3.LOC AND TB1.DATE= TB3.MAXDATE
)
这个查询确实执行了,但它给了我重复,并且绝对不会只过滤最近的记录。不知道我在这里做错了什么。
【问题讨论】:
-
请提供样本数据和期望的结果。 db/sql fiddle 也会有所帮助。