0

私はSQLに非常に慣れていないため、その構文を理解するのに問題があります。これを重複としてタグ付けする前に、私に似た他の質問を読むのにかなりの時間を費やしました.

私がする必要があるのは、2012 年の 7 月から 12 月までの間に生産された製品の SUM を、合計として、および個々の月ごとに取得することです。

私のテーブルには、製造日とその日に製造された合計アイテムの列があります。データベースの製造日は、たとえば「5/21/2013 11:23:45 AM」として保存されます

テーブルの名前は「FIRST_CONVEYOR_ROW」です

COLUMNS は「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

明らかに、クエリの 2 行目は正しくありませんが、必要なものを伝えています。

私が探している出力は次のようになります。

7月: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 に答える