我有兩個疑問:增加了兩個查詢了SQL
SELECT SUM(DATALENGTH(Money))/1048576.0 from Money
SELECT SUM(DATALENGTH(Cc))/1048576.0 from CC
如果單獨運行他們返回20和30 我想結合這些得到的結果爲50
可以這樣做在一行?而是分配查詢1和2的兩個變量值並添加它們?
我有兩個疑問:增加了兩個查詢了SQL
SELECT SUM(DATALENGTH(Money))/1048576.0 from Money
SELECT SUM(DATALENGTH(Cc))/1048576.0 from CC
如果單獨運行他們返回20和30 我想結合這些得到的結果爲50
可以這樣做在一行?而是分配查詢1和2的兩個變量值並添加它們?
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
(SELECT SUM(DATALENGTH(Money))/1048576.0 from Money)
+ (SELECT SUM(DATALENGTH(Cc))/1048576.0 from CC)
至少它在我的數據庫引擎。
這樣做的一個標準方法是使用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
謝謝!我如何分配val1 + val2到上面的腳本中的int變量? – NoviceMe
如果你想給它一個列名,那麼你將使用'select(val1 + val2)作爲TheSum。 。 。 '。如果你想把它分配給一個變量,這取決於腳本語言,但通常就像'select @TheSum =(val1 + val2)。 。 .'。 –
SELECT SUM(S)
FROM (
SELECT SUM(DATALENGTH(Money))/1048576.0 S from Money
UNION ALL
SELECT SUM(DATALENGTH(Cc))/1048576.0 from CC
) Q;
這應該做的伎倆:
SELECT
(SUM(DATALENGTH(Money))/1048576.0) + SUM(DATALENGTH(Cc))/1048576.0
from Money, CC
您可能想要添加'sm'別名。 –
@GordonLinoff:是的,我發現發佈後立即。 –
@GordonLinoff - 你能解釋腳本末尾的't'代表什麼?如果我沒有它,我得到錯誤。爲什麼我需要這個? – NoviceMe