sql - SQL将值的总和分组为范围
问题描述
我有一张表,其中包含某些物品的库存信息。
AGENT_ID | ITEM_ID | WAREHOUSE_ID | 数量 | 批 | 年龄 |
---|---|---|---|---|---|
100 | IT101 | 1 | 10 | B001 | 5 |
100 | IT101 | 2 | 13 | B002 | 8 |
100 | IT101 | 1 | 15 | B003 | 18 |
100 | IT102 | 3 | 10 | B005 | 42 |
年龄列表示物品在仓库中的存放时间。我需要生成一个输出,其中包含物品在仓库中的老化情况。这些需要根据年龄汇总成范围。下面是一个示例输出。
AGENT_ID | ITEM_ID | 仓库 | R1(1-10) | R2(11-20) | R3(21<) |
---|---|---|---|---|---|
100 | IT101 | 1 | 10 | 15 | 0 |
100 | IT101 | 2 | 13 | 0 | 0 |
100 | IT102 | 3 | 0 | 0 | 10 |
第二个表的第一行表示IT101有10件物品在仓库 1 中存放了 (1-10) 天,15 件商品在仓库 1 中存放了 (11-20) 天,以此类推。
有没有办法从代理、项目、仓库 id 分组并同时将项目数量汇总到范围中?第一个表可能包含数百万条记录。尝试了一些内部查询,但这需要很多时间。
解决方案
您需要使用条件聚合:
select AGENT_ID, ITEM_ID, WAREHOUSE
, sum(case when age between 1 and 10 then QTY end) "R1(1-10)"
, sum(case when age between 11 and 20 then QTY end) "R2(11-20)"
, sum(case when age > 20 then QTY end) "R3(21<)"
From table
group by AGENT_ID, ITEM_ID, WAREHOUSE
推荐阅读
- java - log4j 2 不显示依赖日志
- java - 使用 Keycloak 登录时,Tomcat 有时会响应 403,有时不会
- sql - sql查询中的错误'未能找到从未知到文本的转换函数'
- node.js - 如何修复未定义的猫鼬模式?
- c - 从文本文件读取的程序尝试在文件完成后读取额外的行
- javascript - 图像未使用 Angular 中的新 URL 刷新
- postgresql - 如何为 python Bitbucket Pipeline 设置 Postgres 数据库模式
- wordpress - Woocommerce - 按首字母分组
- jquery - .parent().find('img').eq(0) 错误
- visual-studio-code - VS 代码重构:更改所有出现 - 但仅在块范围内