2013-04-18 88 views
0

我有兩個疑問:增加了兩個查詢了SQL

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

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

如果單獨運行他們返回20和30 我想結合這些得到的結果爲50

可以這樣做在一行?而是分配查詢1和2的兩個變量值並添加它們?

回答

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 
+0

您可能想要添加'sm'別名。 –

+0

@GordonLinoff:是的,我發現發佈後立即。 –

+0

@GordonLinoff - 你能解釋腳本末尾的't'代表什麼?如果我沒有它,我得到錯誤。爲什麼我需要這個? – NoviceMe

0

我相信這將工作:

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

至少它在我的數據庫引擎。

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 
+0

謝謝!我如何分配val1 + val2到上面的腳本中的int變量? – NoviceMe

+0

如果你想給它一個列名,那麼你將使用'select(val1 + val2)作爲TheSum。 。 。 '。如果你想把它分配給一個變量,這取決於腳本語言,但通常就像'select @TheSum =(val1 + val2)。 。 .'。 –

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; 
1

這應該做的伎倆:

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