2017-09-29 1 views
0

SQL Server에서 나누기를 사용하려고합니다. 나는 아래의 코드 스 니펫을 시도했다.SQL Server의 division

SELECT m.[Profit]/f.[Target] 

는 그리고 또한

SELECT SUM(m.[Profit]/f.[Target]) 

을 시도했지만 나는

나누기에 의한 제로 오류가 발생한 오류가 발생합니다.
경고 : Null 값은 집계 또는 다른 SET 작업에 의해 제거됩니다.

이유는 무엇이며 어떻게 해결할 수 있습니까? 제안 된 온라인 수정 프로그램은이 코드가 작동해야한다고 말하지만 그렇지 않습니다.

감사

+1

을 그 F '의 값 중 하나 [대상. ]'은 0입니다. 당신은 SQL-Server에게 그러한 경우에 당신이하고 싶은 것을 알려줌으로써 그것을 수정할 수 있습니다. –

+0

Profit 및 target의 데이터 유형에 따라 정수 계산으로도 잡힐 수 있습니다. 그들 중 하나가 정수가 아니라면 괜찮을 것입니다. – HLGEM

답변

3

사용 NULLIF 제로 예외로 나눈 피하기 위해

SELECT SUM(m.[Profit]/NULLIF(f.[Target],0)) 

분모 다음은 NULL

0

당신이 문제를 정확히 지정을 얻을 오류로 대체됩니다 0이면. 귀하의 코드는 0으로 나누려고하는데, 이는 수학적으로 불가능합니다.

이 오류가 발생하지 않도록하려면 NULLIF를 지정하십시오. 내가 목표의 %를 결정하려고 한 경우

1

, 내가 좋아하는 뭔가를 시도 할 것 (이익/목표 컬럼에 의해 추정) : 그 이유는

SELECT 
    CASE WHEN ISNULL(f.[Target],0) = 0 THEN NULL -- or whatever you need to return when the target value is undefined, or it is 0 
    ELSE m.[Profit]/f.[Target] END AS [result]