gpt4 book ai didi

mysql - SQL查询最近记录

转载 作者:行者123 更新时间:2023-11-29 18:22:43 24 4
gpt4 key购买 nike

下午好,

我一整天都在研究这个问题,但我无法弄清楚。我正在 Excel 中执行此查询。

SELECT 
PRICE_BOOK.status,
PRICE_BOOK.ms_code,
PRICE_BOOK.location_code,
SUPPLIER_LOC_HDR.name,
PRICE_BOOK.mfg_code,
PRICE_BOOK.group_code,
PRICE_BOOK.stock_id,
PRICE_BOOK.effective_date,
PRICE_BOOK.price
FROM dbo.MS_INFO MS_INFO, dbo.PRICE_BOOK PRICE_BOOK, dbo.SUPPLIER_LOC_HDR
SUPPLIER_LOC_HDR
WHERE MS_INFO.ms_code = PRICE_BOOK.ms_code AND
SUPPLIER_LOC_HDR.location_code = PRICE_BOOK.location_code AND
((PRICE_BOOK.mfg_code Not In ('Type1','Type2','Type3')))

这将导出每个地点、产品、有效时间和价格的价格。

但是,我只需要每个 ms_code、location_code、name、mfg_code、group_code、stock_id 的唯一组合的最新“PRICE_BOOK. effective_date”。

换句话说,我只需导出每个位置每种产品的最新价格。

状态 ms_code 位置_代码 名称 制造商代码 组代码 股票 ID 有效日期 价格
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 61 7/5/17 0:01 1.09
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 61 7/4/17 0:01 1.41
A 供应商 1 航站楼 1 城市 #2 零件类型 1 组 1 61 7/3/17 0:01 1.76
A 供应商 1 航站楼 1 城市 #2 零件类型 1 组 1 61 5/24/17 0:01 1.20
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 62 7/5/17 0:01 1.67
A 供应商 1 航站楼 1 城市 #1 零件类型 1 组 1 62 7/4/17 0:01 1.19
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 62 7/3/17 0:01 1.14
A 供应商 1 航站楼 1 城市 #1 零件类型 1 组 1 62 5/24/17 0:01 1.11
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 63 7/5/17 0:01 1.33
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 63 7/4/17 0:01 1.59
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 63 7/3/17 0:01 1.61
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 63 5/24/17 0:01 1.75
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 64 7/5/17 0:01 1.75
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 64 7/4/17 0:01 1.77
A 供应商 2 1 号航站楼城市 #1 零件类型 1 组 1 64 7/3/17 0:01 1.45
A 供应商 2 1 号航站楼城市 #1 PartType1 Group1 64 5/24/17 0:01 1.77

预期结果

状态 ms_code 位置_代码 名称 制造商代码 组代码 股票 ID 有效日期 价格
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 61 7/5/17 0:01 1.09
A 供应商 1 航站楼 1 城市 #2 零件类型 1 组 1 61 7/3/17 0:01 1.76
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 62 7/5/17 0:01 1.67
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 63 7/5/17 0:01 1.33
A 供应商 1 1 号航站楼城市 #1 零件类型 1 组 1 64 7/5/17 0:01 1.75
A 供应商 2 1 号航站楼城市 #1 PartType1 Group1 64 7/3/17 0:01 1.45

编辑:根据时钟的评论更改查询

SELECT
PRICE_BOOK.status,
PRICE_BOOK.ms_code,
PRICE_BOOK.location_code,
SUPPLIER_LOC_HDR.name,
PRICE_BOOK.mfg_code,
PRICE_BOOK.group_code,
PRICE_BOOK.stock_id,
PRICE_BOOK.effective_date,
PRICE_BOOK.price
FROM dbo.PRICE_BOOK PRICE_BOOK
INNER JOIN dbo.SUPPLIER_LOC_HDR SUPPLIER_LOC_HDR
ON SUPPLIER_LOC_HDR.location_code = PRICE_BOOK.location_code
WHERE ((PRICE_BOOK.mfg_code Not In ('Type1','Type2','Type3')))

提前致谢,

杰夫

最佳答案

您应该使用窗口函数。像这样的事情:

qualify row_number() over(partition by product, location order by effective_date desc) = 1

关于mysql - SQL查询最近记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46435884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com