【问题标题】:SQL group into ranges the sum of valuesSQL将值的总和分组为范围
【发布时间】:2021-08-20 00:34:23
【问题描述】:

我有一个表格,其中包含一些物品的库存信息。

AGENT_ID ITEM_ID WAREHOUSE_ID QTY BATCH AGE
100 IT101 1 10 B001 5
100 IT101 2 13 B002 8
100 IT101 1 15 B003 18
100 IT102 3 10 B005 42

age 列表示物品在仓库中的存放时间。我需要生成一个输出,其中包含物品在仓库中的老化情况。这些需要根据年龄汇总成范围。下面是一个示例输出。

AGENT_ID ITEM_ID WAREHOUSE 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

第二个表的第一行表示IT10110件物品已经在仓库1中存放了(1-10)天,15件物品在仓库 1 (11-20) 天,依此类推。

有没有办法从代理、项目、仓库 ID 进行分组,并同时对项目数量进行汇总,并将其分组为范围? 第一个表可能包含数百万条记录。尝试了一些内部查询,但它需要很多时间。

【问题讨论】:

    标签: sql oracle11g


    【解决方案1】:

    你需要使用条件聚合:

    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
    

    【讨论】:

      猜你喜欢
      • 2021-05-06
      • 2013-01-27
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多