我的查询类似于以下格式:
select
@minValue = min(outerQuery.Consumption),
@maxValue = max(outerQuery.Consumption),
@avgValue = avg(outerQuery.Consumption),
@userValue = (select value where id = '12345') -- <--Can this be done?
from
(select
id, value
from
complexInnerQuery) outerQuery
我正在尝试从我的子查询中设置min,max,avg值,同时还尝试根据我传入的id获取特定值。这在单个查询中是否可行?我的目标是避免为了性能而调用另一个函数来获取输出。
谢谢!
答案 0 :(得分:1)
不是100%你打算传递id的方式,但是我会使用@jpw的建议并使用cte作为外部查询:
with outerQuery
as (
select id
,value
from complexInnerQuery
)
select @minValue = min(outerQuery.Consumption)
,@maxValue = max(outerQuery.Consumption)
,@avgValue = avg(outerQuery.Consumption)
,@userValue = (
select value
from outerQuery
where id = '12345'
)
from outerQuery
或者,在@userValue的子查询中添加from子句可能会使您获得所需的位置:
select
@minValue = min(outerQuery.Consumption),
@maxValue = max(outerQuery.Consumption),
@avgValue = avg(outerQuery.Consumption),
@userValue = (select value from outerQuery where id = '12345') -- <--Can this be done?
from
(
select
id,
value
from
complexInnerQuery
) outerQuery
如果这没有帮助,请发布有关内部查询的更多信息以及您对@userValue所做的工作。