Oracle 一列计算多个输出

Oracle 一列计算多个输出,oracle,oracle11g,Oracle,Oracle11g,我已经根据年初至今、季度至今和月至今显示了产品总销售额。问题是我必须只展示其中的一个。在选择的基础上,只能看到一个输出,即我们有单选按钮从多个中选择一个。这里还提供了一个要选择的输入,并根据该输入生成输出。输入可以是任何YTD、QTD或MTD。输出是根据输入生成的。我不知道如何计算输入可以变化的列输出。 我有一张产品表- Product_ID Product_name Price 1 Mobile 200

我已经根据年初至今、季度至今和月至今显示了产品总销售额。问题是我必须只展示其中的一个。在选择的基础上,只能看到一个输出,即我们有单选按钮从多个中选择一个。这里还提供了一个要选择的输入,并根据该输入生成输出。输入可以是任何YTD、QTD或MTD。输出是根据输入生成的。我不知道如何计算输入可以变化的列输出。 我有一张产品表-

Product_ID       Product_name          Price
1                  Mobile               200
2                   T.V.                400
3                  Mixer                300
我有一张这样的销售表-

Product_ID          Sales_Date         Quantity
1                   01-01-2015            30
2                   03-01-2015            40
3                   06-02-2015            10
1                   22-03-2015            30
2                   09-04-2015            10
3                   21-05-2015            40
1                   04-06-2015            40
2                   29-07-2015            30
1                   31-08-2015            30
3                   14-09-2015            30
“我的输出”列包含以下3列:-
产品标识、产品名称和总金额
。 列Total_Amount(数量*价格)必须根据用户提供的输入计算销售额,即:

IF it is YTD then it should calculate the total sale from Starting Date of Year ( 01-01-2015) to the current_date(sysdate),

IF it is QTD then in which quarter the current date is falling i.e if current month is september then from 1 July to current_date(sysdate),

IF it is MTD then in which month the current date is falling to the current_date(sysdate).

有人能帮忙吗。谢谢

我的假设是,您有3个单选按钮(在我的示例中为变量:YTD、:QTD、:MTD),其中用户一次只能选择一个值,其余值将为空

您可以使用类似这样的工具来获得您想要的:

select SUM(a.QTY*B.PRICE) from PRODUCTS a
inner join SALES B on a.PRODUCT_ID=B.PRODUCT_ID
where 
(:YTD is null or B.SALES_DATE between '01-JAN-15' and sysdate)
and
(:QTD is null or TO_CHAR(B.SALES_DATE, 'YYYY-Q')=TO_CHAR(sysdate, 'YYYY-Q'))
and
(:MTD is null or TO_CHAR(B.SALES_DATE, 'MM')=TO_CHAR(sysdate, 'MM'));

您可以在此处进行测试

您的查询将为所有3项提供相同的结果:(同时,我的数量包含在销售表中,价格包含在产品表中。请在上面创建表格和数据,以便我可以更正脚本。对不起,伙计。我尝试过,但我无法创建它总是抛出错误。我不知道为什么我没有任何错误。你可以测试它如何计算应该给出qtd、ytd或mtd的产品…我知道了吗s给出所有查询的结果并没有询问应该计算哪个product_id:(它只是calculatesorry,我忘了加入product;脚本已经修改,加上与price的乘法已经添加
-- step 1
create or replace view my_admin
as
select 'YTD' element, product_id,  sum(quantity) sum_quantity   
from sales
where Sales_date  between trunc(sysdate,'Y') and sysdate
group by product_id 
union
select 'QTD', product_id, sum(quantity) sum_quantity  
from sales
where Sales_date  between trunc(sysdate,'Q') and sysdate
group by product_id
union
select 'MTD', product_id, sum(quantity) sum_quantity  
from sales
where Sales_date  between trunc(sysdate,'MM') and sysdate
group by product_id



-- step 2
select element, p.product_name,  (sum_quantity * p.PRICE) agregate
from my_admin a
inner join products p  on a.product_id = p.product_id  
where element = (:input)