自己出了一個題,原本打算配合分析函數完善數據的,結果發現使用分析函數反而走偏了,如題:
根據時間段(精確到月)按月查詢時間段內截止當前月份最后一刻各物品的累積銷售量,
(比如傳入時間參數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.物品