0

我有两个疑问:

SELECT SUM(DATALENGTH(Money)) / 1048576.0 from Money

SELECT SUM(DATALENGTH(Cc)) / 1048576.0 from CC

如果单独运行,它们会返回 20 和 30。我想将它们结合起来得到 50 的结果。

这可以在一行中完成吗?而不是分配查询1和2的两个变量值并添加它们?

4

5 回答 5

1

这样做的标准方法是使用cross join

select val1 + val2
from (SELECT SUM(DATALENGTH(Money)) / 1048576.0 as val1 from Money
     ) t1 cross join
     (SELECT SUM(DATALENGTH(Cc)) / 1048576.0 as val2 from CC
     ) t2
于 2013-04-18T21:27:16.223 回答
1
select sum(sm) as total_sum
from (
  SELECT SUM(DATALENGTH(Money)) / 1048576.0 as sm 
  from Money

  union all

  SELECT SUM(DATALENGTH(Cc)) / 1048576.0 
  from CC
) t
于 2013-04-18T21:27:27.653 回答
1

这应该可以解决问题:

SELECT 
(SUM(DATALENGTH(Money)) / 1048576.0) + SUM(DATALENGTH(Cc)) / 1048576.0
from Money, CC
于 2013-04-18T21:28:53.353 回答
0

我相信这会奏效:

Select 
   (SELECT SUM(DATALENGTH(Money)) / 1048576.0 from Money) 
 + (SELECT SUM(DATALENGTH(Cc)) / 1048576.0 from CC)

至少在我的数据库引擎中是这样。

于 2013-04-18T21:27:04.377 回答
0
SELECT SUM(S)
FROM (
    SELECT SUM(DATALENGTH(Money)) / 1048576.0 S from Money
    UNION ALL
    SELECT SUM(DATALENGTH(Cc)) / 1048576.0 from CC
) Q;
于 2013-04-18T21:28:24.397 回答