我有两个疑问:
SELECT SUM(DATALENGTH(Money)) / 1048576.0 from Money
SELECT SUM(DATALENGTH(Cc)) / 1048576.0 from CC
如果单独运行,它们会返回 20 和 30。我想将它们结合起来得到 50 的结果。
这可以在一行中完成吗?而不是分配查询1和2的两个变量值并添加它们?
我有两个疑问:
SELECT SUM(DATALENGTH(Money)) / 1048576.0 from Money
SELECT SUM(DATALENGTH(Cc)) / 1048576.0 from CC
如果单独运行,它们会返回 20 和 30。我想将它们结合起来得到 50 的结果。
这可以在一行中完成吗?而不是分配查询1和2的两个变量值并添加它们?
这样做的标准方法是使用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
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
这应该可以解决问题:
SELECT
(SUM(DATALENGTH(Money)) / 1048576.0) + SUM(DATALENGTH(Cc)) / 1048576.0
from Money, CC
我相信这会奏效:
Select
(SELECT SUM(DATALENGTH(Money)) / 1048576.0 from Money)
+ (SELECT SUM(DATALENGTH(Cc)) / 1048576.0 from CC)
至少在我的数据库引擎中是这样。
SELECT SUM(S)
FROM (
SELECT SUM(DATALENGTH(Money)) / 1048576.0 S from Money
UNION ALL
SELECT SUM(DATALENGTH(Cc)) / 1048576.0 from CC
) Q;