我有多个SQL查询,每个查询生成一个聚合列输出,即一个sql查询返回一列的最大值,另一个返回列中所有值的总和,依此类推。我想将所有这些值显示为表中的单个记录。例如。
Total_Employees Total_Employees_In_US Bonus_OF_Employees_Under_25
这只是一个例子。所有列都相互独立,但需要以这种方式显示。我试图谷歌我的问题,但我无法正确地说出来获得任何线索。我确信这个问题一定得到了解决,但我无法达成。这个问题已经解决了吗?任何指向正确路径的指针都是有帮助的。如果已经回答,我将删除这个问题。
答案 0 :(得分:2)
您的个人查询可以在CTE
中,您可以进行最终加入。
这只是一个例子,在这种情况下,单个GROUP BY应该有效,因为我不知道你的查询,你可以做类似的事情。
; with cte as
(
select COUNT(*) as Total_Employees, Record# from TableA
GROUP BY Record#
),
cte1 as
(
select COUNT(*) as Total_Employees_In_US, Record# from TableA
where -- some condition
group by Record#
)
select cte.Record#, cte.Total_Employees, cte1.Total_Employees_In_US
from cte
join cte1
on cte1.Record#= cte.Record#
答案 1 :(得分:2)
如果您愿意,可以使用单独的查询:
select
(select count(*) from employees) Total_Employees,
(select count(*) from employees where country = 'USA') Total_Employees_In_US,
(select sum(bonus) from employees where age < 25) Bonus_OF_Employees_Under_25
from dual
或者在这个例子中,只有一个相对简单的查询:
select
count(*) Total_Employees,
sum(case when country = 'USA' then 1 end) Total_Employees_In_US,
sum(case when age < 25 then bonus end) Bonus_OF_Employees_Under_25
from employees
制作小组:
select
EmployeeCategory,
count(*) Total_Employees,
sum(case when country = 'USA' then 1 end) Total_Employees_In_US,
sum(case when age < 25 then bonus end) Bonus_OF_Employees_Under_25
from employees
group by EmployeeCategory