[英]Compare sums of two columns in sql
我有兩個表,其列名為no_id,我想測試表中兩列的值是否相同。
因此,我試圖對兩列的值求和並比較結果。
SELECT
CASE
WHEN SUM (cast(a.no_id as bigint)) = SUM(cast(b.no_id as bigint)) THEN 'YES'
ELSE 'NO'
END as no_id
FROM table_a as a
,table_b as b
查詢的結果為否,但是當我選擇每個總和時:
SELECT
SUM (cast(a.no_id as bigint)),
SUM(cast(b.no_id as bigint))
FROM table_a as a
,table_b as b
我有兩個空值,每列一個。 而不是列的總和。
我必須對兩個表的其他二十列進行此操作。
兩個表中的no_id都是varchar(16)。
------更新------
no_id僅包含數字字符串,我進行了下一個查詢以確保將null視為0:
SELECT
SUM(cast(ISNULL(a.no_id,0) as bigint)),
SUM(cast(ISNULL(b.no_id,0) as bigint))
FROM table_a as a
,table_b as b
但是我一直得到相同的結果。
如果我僅從一張表中選擇結果,那么它可以工作,我得到的總和是:
SELECT
SUM(cast(ISNULL(a.no_id,0) as bigint))
FROM table_a as a
然后,為什么它不能同時用於兩個表?
正如我在評論中所說:
,
)運算符,因為它已經過了二十多年了,請改用JOIN關鍵字語法。 因為如果您這樣做,您將知道... 像這樣:
SELECT
CASE
WHEN (SELECT SUM(cast(no_id as bigint)) FROM table_a)
= (SELECT SUM(cast(no_id as bigint)) FROM table_b) THEN 'YES'
ELSE 'NO'
END as no_id
問題是,你不說怎么table_a
和table_b
是相關的,所以在每行table_a
是搭配中的每一行table_b
如果任一表有連一個空值,那么總和將是無效的。
如果您只是希望兩個表中的SUMS匹配,那么我不確定SUM是最好的指標。 如果表A的值為1和4,表b的值為2和3,則SUM將匹配,但顯然值是不同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.