所以这是我的问题:
我有 2 个不同的 sql 选择查询,它们都返回一个值(1425000 和 2850000)我现在想要做的是:
Select (query1 / query 2)
from xxxxx
where xxxx;
但是查询 1 和查询 2 是安静的复杂查询,其中包含计数和求和函数。
我该如何解决这个问题?
declare @q1 int, @q2 int
select @q1 = (query1)
select @q2 = (query2)
select @q1 / @q2
SELECT t1.val / t2.val
FROM (SELECT val
FROM foo) t1
INNER JOIN (SELECT val
FROM bar) t2
(SELECT val FROM foo)
并且(SELECT val FROM bar)
可以用任意SELECT
语句替换。
有关演示,请参见sqlfiddle。
你可以为这样的事情创建视图。
create view vResult1 as
select your(
complicated(
query(
here()
)
)
);
create view vResult2 as
select another(
complicated(
query(
here()
)
)
);
然后你可以运行它们:
select vResult1/vResult2;
如果您需要复杂查询的参数 - 您可以使用存储过程。
我认为你将不得不使用变量..如果你不想在一个查询中全部写出来。
SET @query1_result = (Select ... complicated query 1)
SET @query2_result = (Select ... complicated query 2)
Select @query1_result / @query2_result