Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql oracle销售总额查询_Sql_Oracle_Sum - Fatal编程技术网

Sql oracle销售总额查询

Sql oracle销售总额查询,sql,oracle,sum,Sql,Oracle,Sum,在我目前工作的一个项目中,我们需要获得每月、每季度和每年的客户销售总额。我尝试了如下所示的查询,得到了今天的正确结果。但我还需要去年的销售业绩。(去年的月销售额是该月的总和) 我真的需要一个快速修复这里,感谢每一个评论提前 SELECT CUSTOMER, PRODUCT, EXTRACT(MONTH FROM DAY) MONTH, EXTRACT(YEAR FROM DAY) YEAR, SUM( CASE WHEN DAY >= TRU

在我目前工作的一个项目中,我们需要获得每月、每季度和每年的客户销售总额。我尝试了如下所示的查询,得到了今天的正确结果。但我还需要去年的销售业绩。(去年的月销售额是该月的总和)

我真的需要一个快速修复这里,感谢每一个评论提前

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)
选择
顾客
产品,,
摘录(月自日)月,
摘录(年月日)年,
总数(
案例
当日期>=TRUNC(sysdate,'MM')时
然后是每日大减价
其他0
结束)作为销售月,
总数(
案例
当日期>=添加月份时(TRUNC(sysdate,'MM'),-3)
和日期=添加月份时(TRUNC(sysdate,'MM'),-6)
和日期=添加月份时(TRUNC(sysdate,'MM'),-12)
和日期
这可能有助于满足您的需求。。。它给出了每个月、每个季度以及全年、每年的总数。如果您想要特定年份,我建议添加“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)

这可能不是您所需要的,但可能会有所帮助:

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 
....
此外,请在此查找您可能需要的好例子:

您的查询有什么问题?您能提供您正在寻找的示例结果吗?您的查询将根据当前日期为您提供三个月的分组。。。仅当您在季度结束月份运行查询时,这将等同于公司季度。所以,我的问题是,当你说“季度”时,你的意思是1-2-3月总是第1季度,还是你需要它来像你的查询那样移动?