sql - SELECT MAX 日期及其数量和该日期的 SUM 数量
问题描述
我正在使用 Oracle 11g。假设我有一个如下的交货表。下面的示例显示最晚日期是 2019 年 7 月 11 日,并且该项目以不同的数量交付了两次。如何获取最新日期(最大日期)及其数量以及数量的总和?
我已经尝试过,我得到了最大日期和最大数量的结果。但不是最大数量的总和。
SELECT DISTINCT k.item_no,
MAX(k.date) OVER(PARTITION BY k.item_no) AS LATEST_DEL_DATE,
MAX(k.qty) KEEP(DENSE_RANK FIRST ORDER BY k.date DESC NULLS LAST)
OVER(PARTITION BY k.item_no) AS LATEST_QUANTITY
FROM DEL k, DELCONFIRM h, ITEM o
where k.code_no=h.code_no
and k.item_no=o.item_no
AND k.qty<> 0
and k.item_no='123'
;
我希望输出结果看起来像
解决方案
您可以JOIN
将交货表导出到相关项目的最新交货日期的派生表,然后SUM
是该日期的交货数量:
SELECT m.item_code,
m.max_date AS "Latest_delivery_date",
SUM(d1.quantity) AS "Total_delivered"
FROM (SELECT item_code, MAX(date) AS max_date
FROM delivery
WHERE item_code = 123) m
JOIN delivery d1 ON d1.item_code = m.item_code AND d1.date = m.max_date
GROUP BY m.item_code, m.max_date
输出:
item_code Latest_delivery_date Total_delivered
123 2019-11-07 17
推荐阅读
- kubernetes - 为 EKS 服务命名(而不是自动生成)
- hyperledger-fabric - 私人数据收集到底有什么意义?
- smartcard - 使用 APDU 列出 globalplatform 智能卡的内容
- c# - 更改 Swagger 属性名称
- python - 为什么 pd.date_range 返回一个空序列?
- angular - 用于由斜线分隔的路径的 Ionic 4 通配符路由
- node.js - 如何在 react-Nodejs Web 应用程序中传递令牌(数据)(从 nodejs 文件到 react tsx 文件)
- c# - 访问被 Azure AD B2C 锁定的 Azure 函数应用时收到 403 错误
- airflow - 当 schedule_interval 设置为 @once 时,只有 dag 中的第一个任务在气流中执行
- html - 有没有办法创建没有网格线的表格?