0

私が現在取り組んでいるプロジェクトでは、月次、四半期、および年次の顧客売上高を取得する必要があります。今日の正しい結果を取得する以下のクエリを試しました。しかし、昨年の販売の結果も必要です。(昨年の月間販売はその月の合計です)

私は本当にここで迅速な修正が必要です、事前にすべてのコメントに感謝します

SELECT    
CUSTOMER,        
PRODUCT,
EXTRACT(MONTH FROM DAY) MONTH,
EXTRACT(YEAR FROM DAY) YEAR,
SUM(
    CASE
        WHEN DAY >= TRUNC(sysdate,'MM')
        THEN DAILY_SALE
        ELSE 0
    END) AS MONTH_SALE,
SUM(
    CASE
        WHEN DAY >= add_months(TRUNC(sysdate,'MM'),-3)
        AND DAY < TRUNC(sysdate,'MM')
        THEN DAILY_SALE
        ELSE 0
    END) AS THREE_MONTHL_SALE,
SUM(
    CASE
        WHEN DAY >= add_months(TRUNC(sysdate,'MM'),-6)
        AND DAY < TRUNC(sysdate,'MM')
        THEN DAILY_SALE
        ELSE 0
    END) AS SIX_MONTHL_SALE,
SUM(
    CASE
        WHEN DAY >= add_months(TRUNC(sysdate,'MM'),-12)
        AND DAY < TRUNC(sysdate,'MM')
        THEN DAILY_SALE
        ELSE 0
    END) AS YEAR_SALE
FROM
SALES_TABLE
GROUP BY
CUSTOMER,
PRODUCT,
EXTRACT(MONTH FROM DAY),
EXTRACT(YEAR FROM DAY)
4

2 に答える 2

0

これはあなたが望むものになるかもしれません...それはあなたに毎月と四半期、そして一年中、毎年の合計を与えます。特定の年が必要な場合は、「where EXTRACT(YEAR FROM DAY)=2012」または同様の句を追加することをお勧めします。

これはあなたが求めていたものだと思いますが、それはあなたが提供したサンプルとは異なります。あなたが提供したサンプルは、3、6、9、および12か月の売上を示しましたが、これは四半期の年および月と同じではありません。それでも、必要に応じて簡単に組み合わせることができます。

SELECT    
CUSTOMER,        
PRODUCT,
EXTRACT(YEAR FROM DAY) YEAR,
SUM(DAILY_SALE) as YEAR_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '01' THEN DAILY_SALE ELSE 0 END) AS MONTH_01_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '02' THEN DAILY_SALE ELSE 0 END) AS MONTH_02_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '03' THEN DAILY_SALE ELSE 0 END) AS MONTH_03_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '04' THEN DAILY_SALE ELSE 0 END) AS MONTH_04_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '05' THEN DAILY_SALE ELSE 0 END) AS MONTH_05_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '06' THEN DAILY_SALE ELSE 0 END) AS MONTH_06_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '07' THEN DAILY_SALE ELSE 0 END) AS MONTH_07_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '08' THEN DAILY_SALE ELSE 0 END) AS MONTH_08_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '09' THEN DAILY_SALE ELSE 0 END) AS MONTH_09_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '10' THEN DAILY_SALE ELSE 0 END) AS MONTH_10_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '11' THEN DAILY_SALE ELSE 0 END) AS MONTH_11_SALES,
SUM(CASE WHEN TO_CHAR(DAY, 'MM') = '12' THEN DAILY_SALE ELSE 0 END) AS MONTH_12_SALES,
SUM(
    CASE
        WHEN TO_CHAR(DAY, 'MM') IN ('10', '11', '12')
        THEN DAILY_SALE
        ELSE 0
    END) AS Q4_SALES,
SUM(
    CASE
        WHEN TO_CHAR(DAY, 'MM') IN ('07', '08', '09')
        THEN DAILY_SALE
        ELSE 0
    END) AS Q3_SALES,
SUM(
    CASE
        WHEN TO_CHAR(DAY, 'MM') IN ('04', '05', '06')
        THEN DAILY_SALE
        ELSE 0
    END) AS Q2_SALES,
SUM(
    CASE
        WHEN TO_CHAR(DAY, 'MM') IN ('01', '02', '03')
        THEN DAILY_SALE
        ELSE 0
    END) AS Q1_SALES,
FROM
SALES_TABLE
GROUP BY
CUSTOMER,
PRODUCT,
EXTRACT(YEAR FROM DAY)
于 2012-12-26T16:29:10.020 に答える
0

これはまさにあなたが必要としているものではないかもしれませんが、役立つかもしれません:

select a.Product_Name, 
d.Company_Name, 
to_char(Order_Date, 'YYYY') as OrderYear,
sum(case to_char(c.Order_Date, 'Q') when '1' 
    then b.Unit_Price*b.Quantity*(1-b.Discount) else 0 end) "Qtr 1",
sum(case to_char(c.Order_Date, 'Q') when '2' 
    then b.Unit_Price*b.Quantity*(1-b.Discount) else 0 end) "Qtr 2",
sum(case to_char(c.Order_Date, 'Q') when '3' 
    then b.Unit_Price*b.Quantity*(1-b.Discount) else 0 end) "Qtr 3",
sum(case to_char(c.Order_Date, 'Q') when '4' 
    then b.Unit_Price*b.Quantity*(1-b.Discount) else 0 end) "Qtr 4" 
from Products a 
....

また、必要なものの良い例については、http: //docs.oracle.com/html/B13915_04/appendix.htm#BEHJBJDEを参照してください。

于 2012-12-26T19:53:53.727 に答える