用于monthwise报表的Oracle SQL查询
伙计们,我有一个名为a的表,它的列是用于monthwise报表的Oracle SQL查询,sql,oracle,Sql,Oracle,伙计们,我有一个名为a的表,它的列是 ----- A ----- S_DATE DUR VIEWS AMOUNT 表A中的数据有以下按日期排列的行 我的要求是,我想编写一个SQL查询,该查询不会生成monthwise*report*。例如,在webGUI中,我在下拉列表中选择月份为12月,选择年份为2010年。我需要创建并显示从2010年11月1日到2010年12月1日的DUR、视图和金额的总和。有没有关于如何做到这一点的想法 2010年12月的结果如下所示 **DEC2010 12 19
-----
A
-----
S_DATE
DUR
VIEWS
AMOUNT
表A中的数据有以下按日期排列的行
我的要求是,我想编写一个SQL查询,该查询不会生成monthwise*report*。例如,在webGUI中,我在下拉列表中选择月份为12月,选择年份为2010年。我需要创建并显示从2010年11月1日到2010年12月1日的DUR、视图和金额的总和。有没有关于如何做到这一点的想法
2010年12月的结果如下所示
**DEC2010 12 19 341**
当然,由于您的要求,11月的第一天将出现在11月和12月的月报中,但这是可行的
SQL> VARIABLE p_months VARCHAR2(3);
SQL> VARIABLE p_year NUMBER;
SQL> EXEC :p_months := 'DEC'; :p_year := 2010;
PL/SQL procedure successfully completed.
SQL> WITH tableA AS (
2 SELECT DATE '2010-10-23's_date , 12 dur, 1 views, 10000.0 amount FROM DUAL
3 UNION ALL SELECT DATE '2010-11-01', 2, 4 , 200.0 FROM DUAL
4 UNION ALL SELECT DATE '2010-11-14', 4, 5 , -9 FROM DUAL
5 UNION ALL SELECT DATE '2010-12-01', 6, 10, 150.0 FROM DUAL
6 UNION ALL SELECT DATE '2010-12-19', 1, 12, 130.0 FROM DUAL
7 )
8 SELECT :p_months||:p_year month,
9 SUM(dur),
10 SUM(views),
11 SUM(amount)
12 FROM tableA
13 WHERE s_date >= add_months(to_date(:p_months||:p_year, 'MONYYYY'), -1)
14 AND s_date < to_date(:p_months||:p_year, 'MONYYYY') + 1;
MONTH SUM(DUR) SUM(VIEWS) SUM(AMOUNT)
---------- ---------- ---------- -----------
DEC2010 12 19 341
SQL> VARIABLE p_months VARCHAR2(3);
SQL> VARIABLE p_year NUMBER;
SQL> EXEC :p_months := 'DEC'; :p_year := 2010;
PL/SQL procedure successfully completed.
SQL> WITH tableA AS (
2 SELECT DATE '2010-10-23's_date , 12 dur, 1 views, 10000.0 amount FROM DUAL
3 UNION ALL SELECT DATE '2010-11-01', 2, 4 , 200.0 FROM DUAL
4 UNION ALL SELECT DATE '2010-11-14', 4, 5 , -9 FROM DUAL
5 UNION ALL SELECT DATE '2010-12-01', 6, 10, 150.0 FROM DUAL
6 UNION ALL SELECT DATE '2010-12-19', 1, 12, 130.0 FROM DUAL
7 )
8 SELECT :p_months||:p_year month,
9 SUM(dur),
10 SUM(views),
11 SUM(amount)
12 FROM tableA
13 WHERE s_date >= add_months(to_date(:p_months||:p_year, 'MONYYYY'), -1)
14 AND s_date < to_date(:p_months||:p_year, 'MONYYYY') + 1;
MONTH SUM(DUR) SUM(VIEWS) SUM(AMOUNT)
---------- ---------- ---------- -----------
DEC2010 12 19 341