2013-04-05 45 views
0

我对SQL很陌生,并且在理解一些语法时遇到问题。在您将其标记为重复之前,我花了相当一段时间来阅读与我的类似的其他问题。关于日期作为蟾蜍参数的基本SQL查询构造

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

我的表格有生产日期和当天生产的总项目的列。在数据库中的制造日期存储为“2013年5月21日上午11点23分45秒”例如

TABLE被命名为“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 

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

输出进出口寻找会是这样的:

JULY:4吨

AUG:6吨

..... 共有30吨。

我可以很容易地获得整体总数,但是当我尝试添加日期范围时,它会炸毁我。

任何洞察力,非常感谢。

+0

您是否尝试过使用'WHERE'条款? – 2013-04-05 21:03:36

+2

了解更多关于您可以使用日期的功能。 还有“group by”功能 通过“group by”,您可以按月分组数据。 – nightfox79 2013-04-05 21:05:02

回答

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 
+0

非常感谢。查询的方式让我很容易理解它背后的语法。 – 2013-04-09 17:09:50