1

所以这是我的问题:

我有 2 个不同的 sql 选择查询,它们都返回一个值(1425000 和 2850000)我现在想要做的是:

Select (query1 / query 2)
from xxxxx
where xxxx;

但是查询 1 和查询 2 是安静的复杂查询,其中包含计数和求和函数。

我该如何解决这个问题?

4

4 回答 4

3
declare @q1 int, @q2 int

select @q1 = (query1)
select @q2 = (query2)

select @q1 / @q2
于 2012-10-30T17:15:45.643 回答
2
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

于 2012-10-30T17:17:35.103 回答
1

你可以为这样的事情创建视图。

create view vResult1 as
select your(
         complicated(
           query(
             here()
           )
         )
       );

create view vResult2 as
select another(
         complicated(
           query(
             here()
           )
         )
       );

然后你可以运行它们:

select vResult1/vResult2;

如果您需要复杂查询的参数 - 您可以使用存储过程

于 2012-10-30T17:24:14.020 回答
1

我认为你将不得不使用变量..如果你不想在一个查询中全部写出来。

SET @query1_result = (Select ... complicated query 1)
SET @query2_result = (Select ... complicated query 2)

Select @query1_result / @query2_result
于 2012-10-30T17:24:24.557 回答