2014-11-11 6 views

답변

3

예, 다를 수 있습니다. 의 데이터가 NULLs 인 경우. 다음 고려 :

DECLARE @TestTable TABLE (ID INT IDENTITY(1,1), ColA INT, ColB INT) 
INSERT INTO @TestTable (ColA, ColB) VALUES (5,2) 
INSERT INTO @TestTable (ColA, ColB) VALUES (5,NULL) 
INSERT INTO @TestTable (ColA, ColB) VALUES (NULL,2) 


SELECT SUM(ColA) - SUM(ColB) FROM @TestTable 
SELECT SUM(ColA - ColB) FROM @TestTable 

첫 번째 쿼리가 6 (10-4)을 반환합니다 두 번째 쿼리는 3 (5-2 플러스 5 NULL 플러스 NULL-2)을 반환합니다 동안. 직접 계산에서 NULL 값이 사용될 때마다 계산이 NULL을 반환합니다.

2

전혀 아님. 특히 그들은 NULL 값을 다르게 처리합니다. 그래서, 고려 :

A  B 
1  NULL 
2  2 
NULL 2 

쿼리 :

select sum(colA) - sum(colB) 

SUM 반환합니다 (1, 2) - SUM (2, 2) = -1

쿼리 :

select sum(colA - colB) 

은 SUM (NULL, 2-2, NULL) = 0을 반환합니다.

범위가있는 숫자로 인해 발생할 수있는 다른 미묘한 차이가 있습니다. 예를 들어, 한 가지 방법은 계산 제한을 초과하고 오류를 생성 할 수 있습니다. 또는 십진수가 다를 수 있습니다. 그러나 일반적으로 NULL의 처리가 가장 큰 차이점입니다.

+0

예에서'sum (colA-colB)'에 대한 결과가 0입니까? –

+0

@ZoffDino. . . 예, 그렇습니다. 고맙습니다. –

+0

@ GordonLinoff 편집하면 나에게 이해가 가지 않는다. '(NULL + 4 + NULL) = 4' 또는'(NULL + 4 + NULL) = NULL'도 내게 의미가 있습니까? – Jonathan