SQL 选择每个商店的最后日期

SQL Select Last Date for Each Store

我有一个数据库,其中每一行都包含一个 Site_No、Product_code、Stock_Date 和 Stock_Qty。对于单个站点


1
2
3
4
5
6
7
8
9
10
11
12
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:

1
2
3
4
5
6
7
8
9
10
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