我想从3个不同的表中获取特定值.每个表具有相同的结构,但包含一年中不同时期的数据.
Temp_Table_Jun (Contains data for June month)
---------------
CustNo CustName Revenue
1000 John 5.55
Run Code Online (Sandbox Code Playgroud)
我还有两张桌子
现在我运行一个查询
select sum(Revenue)Rev_June from Temp_Table_Jun where CustNo='1000'
Run Code Online (Sandbox Code Playgroud)
得到六月的结果.现在我的问题是我想在一个查询中获得所有月份的收入详细信息.
我需要类似的东西(这是错误的,不起作用)
select Rev_June,Rev_Apr,Rev_May,((Rev_June+Rev_Apr+Rev_May)/3)Avg_3_Mon from
(
select sum(Revenue)Rev_June from Temp_Table_Jun where CustNo='1000',
select sum(Revenue)Rev_Apr from Temp_Table_Apr where CustNo='1000',
select sum(Revenue)Rev_May from Temp_Table_May where CustNo='1000'
)
Run Code Online (Sandbox Code Playgroud)
怎么能实现这一目标?我正在使用Oracle 10g.
要获取数据,您可以通过以下方式执行此操作.Oracle 10g没有,PIVOT但您可以使用CASE语句来复制功能:
SELECT sum(case when month = 'June' then Rev END) June
, sum(case when month = 'May' then Rev END) May
, sum(case when month = 'April' then Rev END) April
, avg(Rev) as Average
FROM
(
SELECT sum(revenue) Rev, 'June' as Month from rev_june where cust_no = '1000'
union all
SELECT sum(revenue) Rev, 'April' from rev_apr where cust_no = '1000'
union all
SELECT sum(revenue) Rev, 'May' from rev_may where cust_no = '1000'
) x
Run Code Online (Sandbox Code Playgroud)
或者您可以执行以下操作:
SELECT June, April, May, (June + April + May)/3 as Average
FROM
(
select
(SELECT sum(revenue) from rev_june where cust_no = '1000') as June
, (SELECT sum(revenue) from rev_apr where cust_no = '1000') as April
, (SELECT sum(revenue) from rev_may where cust_no = '1000') as May
from dual
) x
Run Code Online (Sandbox Code Playgroud)