[英]Combining working queries into one query with multiple columns in result set
我有2个基本查询,都按预期工作并返回预期结果:
select
empNumber,
sum(salesPrice) as categorySales
from testSchema.sales
where empNumber = 12345
and date between '2018-01-01' and '2018-04-31'
and g.category = 'NewCategory'
group by empNumber;
select
empNumber,
sum(salesPrice) as totalSales
from testSchema.sales
where empNumber = 12345
and date between '2018-01-01' and '2018-04-31'
group by empNumber;
但是,我想将它们组合成一个查询,该查询将每个结果作为自己的列返回。 目前,这两个查询之间的主要区别是附加的AND子句创建了一个特定的值。 目前的结果是
第一个查询:
empNumber | categorySales
----------------------------
12345 15603.00
第二个查询:
empNumber | totalSales
----------------------------
12345 350253.00
但我想找到一种高性能且可扩展的方式来将它们结合起来
所需结果:
empNumber | categorySales | totalSales
-----------------------------------------------
12345 15603.00 350253.00
实现此目标的最有效方式是什么,以便将来我可以添加更多子句并返回一个结果集?
合并两者的最简单方法(如果您没有重复的值)是FULL JOIN
尝试这个
with c as(
select
empNumber,
sum(salesPrice) as categorySales
from testSchema.sales
where empNumber = 12345
and date between '2018-01-01' and '2018-04-31'
and g.category = 'NewCategory'
group by empNumber
), d as(
select
empNumber,
sum(salesPrice) as totalSales
from testSchema.sales
where empNumber = 12345
and date between '2018-01-01' and '2018-04-31'
group by empNumber
)
Select isnull(c.empNumber,d.empNumber) as empNumber
,c.categorySales
,d.totalSales
from c full join d ON (c.empNumber = d.empNumber)
将通用条件包括在where
中where
并有条件地where
汇总,即使用case
表达式。
select
empNumber,
sum(case when category = 'NewCategory' then salesPrice else 0 end) as categorySales,
sum(salesPrice) as totalSales
from testSchema.sales
where empNumber = 12345
and date between '2018-01-01' and '2018-04-30'
group by empNumber;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.