0

我对 SQL 很陌生,并且在理解它的语法时遇到了一些问题。在您将其标记为重复之前,我花了很多时间阅读与我类似的其他问题。

我需要做的是获取 2012 年 7 月至 12 月期间每个月生产的产品的总和,并按每个月计算。

我的表有生产日期和当天生产的总物品的列。例如,数据库中的生产日期存储为“5/21/2013 11:23:45 AM”

表名为“FIRST_CONVEYOR_ROW”

列名为“AMNT_OF_PRODUCT”和 PROD_DATE

我需要一些类似的东西:

       SELECT SUM(AMNT_OF_PRODUCT) AS MONTHLYTOTAL FROM FIRST_CONVEYOR_ROW
       FOR EVERY MONTH BETWEEN JULY AND DECEMBER OF 2012

显然查询的第二行不正确,但它传达了我的需要。

我正在寻找的输出将类似于:

七月:4吨

8月:6吨

.....总共30吨。

我可以很容易地获得总体总数,但是当我尝试添加日期范围时,它会让我大吃一惊。

非常感谢任何见解。

4

1 回答 1

3

这是你想要的吗:

CREATE TABLE FIRST_CONVEYOR_ROW (
  AMNT_OF_PRODUCT NUMBER,
  PROD_DATE       date
);

INSERT INTO FIRST_CONVEYOR_ROW
values(7, to_date('01/07/2012','dd/mm/yyyy'));
INSERT INTO FIRST_CONVEYOR_ROW
values(4, to_date('02/07/2012','dd/mm/yyyy'));
INSERT INTO FIRST_CONVEYOR_ROW
values(2, to_date('02/08/2012','dd/mm/yyyy'));
INSERT INTO FIRST_CONVEYOR_ROW
values(3, to_date('04/08/2012','dd/mm/yyyy'));
INSERT INTO FIRST_CONVEYOR_ROW
values(9, to_date('04/12/2012','dd/mm/yyyy'));
INSERT INTO FIRST_CONVEYOR_ROW
values(6, to_date('04/01/2013','dd/mm/yyyy'));
COMMIT;

查询是:

select to_char(PROD_DATE, 'Month') as product_month, sum(AMNT_OF_PRODUCT) as MONTHLYTOTAL
from   FIRST_CONVEYOR_ROW
where  PROD_DATE between to_date('01/07/2012', 'dd/mm/yyyy') and to_date('31/12/2012', 'dd/mm/yyyy')
group by ROLLUP (to_char(PROD_DATE, 'Month'))
order by to_date(product_month, 'Month')
;

查询结果:

PRODUCT_MONTH           MONTHLYTOTAL
----------------------- ------------
July                              11
August                             5
December                           9
                                  25
于 2013-04-05T22:11:57.157 回答