标签:group by tin 比较 sele bug to_char har sys acl
自己出了一个题,原本打算配合分析函数完善数据的,结果发现使用分析函数反而走偏了,如题:
根据时间段(精确到月)按月查询时间段内截止当前月份最后一刻各物品的累积销售量,
(比如传入时间参数2021-04到2021-05月)即分别统计从产生数据开始截止4月末各物品销售累积量和截止5月末各物品累积量
示例数据
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘01-02-2021‘, ‘dd-mm-yyyy‘), ‘002‘, ‘物品A‘, 5, 500);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘03-02-2021‘, ‘dd-mm-yyyy‘), ‘001‘, ‘物品A‘, 2, 200);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘12-04-2021‘, ‘dd-mm-yyyy‘), ‘008‘, ‘物品A‘, 3, 300);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘24-04-2021‘, ‘dd-mm-yyyy‘), ‘007‘, ‘物品A‘, 5, 500);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘07-05-2021‘, ‘dd-mm-yyyy‘), ‘010‘, ‘物品A‘, 3, 300);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘16-05-2021‘, ‘dd-mm-yyyy‘), ‘011‘, ‘物品A‘, 5, 500);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘18-02-2021‘, ‘dd-mm-yyyy‘), ‘003‘, ‘物品B‘, 3, 150);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘11-04-2021‘, ‘dd-mm-yyyy‘), ‘006‘, ‘物品B‘, 3, 150);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘18-05-2021‘, ‘dd-mm-yyyy‘), ‘012‘, ‘物品B‘, 1, 50);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘08-03-2021‘, ‘dd-mm-yyyy‘), ‘005‘, ‘物品C‘, 8, 560);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘13-03-2021‘, ‘dd-mm-yyyy‘), ‘004‘, ‘物品C‘, 6, 420);
insert into T_TABEL (时间, 单号, 物品, 销售量, 销售金额)
values (to_date(‘11-04-2021‘, ‘dd-mm-yyyy‘), ‘009‘, ‘物品C‘, 1, 70);
最先想到用分析函数实现,结果出BUG了,如果某月没销售过某物品,那么这个月将统计不到这个物品的累积销售,绕来绕去虽然能达到最终效果但是太过混乱,实际上效率各方面的也比较拙劣
后面又想到个方式实现,以此记录,
SELECT b.sj 时间,
a.物品,
SUM(a.销售量)
FROM T_TABEL A,(SELECT DISTINCT to_char(b1.时间,‘yyyy-mm‘) sj FROM T_TABEL b1 WHERE b1.时间>=TRUNC(SYSDATE-50)) b
WHERE to_char(a.时间,‘yyyy-mm‘) <=b.sj
GROUP BY b.sj,
a.物品
ORDER BY b.sj,
a.物品
标签:group by tin 比较 sele bug to_char har sys acl
原文地址:https://www.cnblogs.com/ZwyBky/p/14819999.html