我在 oracle 中有一張這樣的表
| 日期_a | cl_id | 數量 |
|---|---|---|
| 06.01.2020 | 010 | 10.0 |
| 09.01.2020 | 010 | 12.1 |
| 09.01.2020 | 010 | 5.0 |
| 13.01.2020 | 010 | 8.0 |
| 09.02.2020 | 010 | 13.1 |
| 12.02.2020 | 010 | 0.0 |
| 01.02.2021 | 010 | 14.0 |
我需要找到每個月/年的金額總和。結果需要是這樣的:
| 日期_a | cl_id | sum_A |
|---|---|---|
| 06.01.2020 | 010 | 35.1 |
| 09.01.2020 | 010 | 35.1 |
| 09.01.2020 | 010 | 35.1 |
| 13.01.2020 | 010 | 35.1 |
| 09.02.2020 | 010 | 13.1 |
| 12.02.2020 | 010 | 13.1 |
| 01.02.2021 | 010 | 14.0 |
我只選擇了 1 個客戶端的資料并撰寫了這樣的代碼,但 sql 拋出錯誤: npt group by expression
select Date_a, cl_id , sum(amount)
from table1
GROUP BY EXTRACT(year from Date_a), EXTRACT(month from Date_a)
where cl_id = '010'
uj5u.com熱心網友回復:
它是SUM您需要的函式的決議形式:
SQL> with test (date_a, cl_id, amount) as
2 (select date '2020-01-06', 10, 10 from dual union all
3 select date '2020-01-09', 10, 12.1 from dual union all
4 select date '2020-01-09', 10, 5 from dual union all
5 select date '2020-01-13', 10, 8 from dual union all
6 select date '2020-02-09', 10, 13.1 from dual union all
7 select date '2020-02-12', 10, 0 from dual
8 )
9 select date_a, cl_id,
10 sum(amount) over (partition by to_char(date_a, 'yyyymm')) sum_a
11 from test ;
DATE_A CL_ID SUM_A
---------- ---------- ----------
06.01.2020 10 35,1
09.01.2020 10 35,1
09.01.2020 10 35,1
13.01.2020 10 35,1
09.02.2020 10 13,1
12.02.2020 10 13,1
6 rows selected.
SQL>
uj5u.com熱心網友回復:
您想要輸出中的所有行,因此您想要使用分析聚合函式而不是使用GROUP BY:
SELECT Date_a,
cl_id,
sum(amount) OVER (PARTITION BY TRUNC(date_a, 'MM')) AS sum_a
FROM table1
where cl_id = '010';
其中,對于您的示例資料:
CREATE TABLE table1 (Date_a, cl_id, amount) AS
SELECT DATE '2020-01-06', '010', 10.0 FROM DUAL UNION ALL
SELECT DATE '2020-01-09', '010', 12.1 FROM DUAL UNION ALL
SELECT DATE '2020-01-09', '010', 5.0 FROM DUAL UNION ALL
SELECT DATE '2020-01-13', '010', 8.0 FROM DUAL UNION ALL
SELECT DATE '2020-02-09', '010', 13.1 FROM DUAL UNION ALL
SELECT DATE '2020-02-12', '010', 0.0 FROM DUAL UNION ALL
SELECT DATE '2020-02-01', '010', 14.0 FROM DUAL;
輸出:
DATE_A CL_ID SUM_A 06-JAN-20 010 35.1 09-JAN-20 010 35.1 09-JAN-20 010 35.1 20 年 1 月 13 日 010 35.1 09-FEB-20 010 27.1 20 年 2 月 12 日 010 27.1 01-FEB-20 010 27.1
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/316292.html
