SQL Select 每个商店的最后日期

SQL Select Last Date for Each Store

我有一个数据库,其中每一行包含 Site_No、Product_code、Stock_Date 和 Stock_Qty。对于单个站点和产品代码,可以有 20 个左右的条目,每个条目都有不同的日期。

我需要 return 所有站点编号,但只需要包含最新日期的记录。

我用谷歌搜索过,我在这里阅读了多篇似乎具有相同类型查询的帖子,但无法获得任何适合我的解决方案。我要么只得到 2 个结果(匹配最大日期的 2 个),要么我仍然得到所有结果(所有日期和网站)

使用 Teradata SQL 助手

下面是 select 语句,它将 return 产品代码 1234 的所有条目。

SELECT Site_No, 
       Product_code, 
       Stock_Date,
       Stock_Qty 
FROM Stock_Levels
where Product_code = 1234
SELECT * 
FROM
(
SELECT Site_No, 
       Product_code, 
       Stock_Date,
       Stock_Qty,
       Row_Number() OVER (PARTITION BY Site_No ORDER BY Stock_Date DESC) rn
FROM Stock_Levels
where Product_code = 1234
)A
WHERE rn = 1

在 Teradata 中,有一个很好的标准扩展 SQL,用于过滤窗口聚合函数的结果,QUALIFY:

SELECT Site_No, 
       Product_code, 
       Stock_Date,
       Stock_Qty 
FROM Stock_Levels
where Product_code = 1234
QUALIFY
   ROW_NUMBER() 
   OVER (PARTITION BY Site_No           -- for each site
         ORDER BY Stock_Date DESC) = 1  -- get the highest date