0
0 반환하지 않는 나는 다음과 같은 쿼리가 : 선택한 열의 모든 값이 NULL
을 때왜 SQL Server는 계산
select
(case
when try_convert(decimal(3, 1), DEC10assessmentData.writ_literatureReview) is not null
then cast(DEC10assessmentData.writ_literatureReview as decimal(3, 1))
else 0
end/100 * 4
+ case
when try_convert(decimal(3, 1), DEC10assessmentData.writ_exposition) is not null
then cast(DEC10assessmentData.writ_exposition as decimal(3, 1))
else 0
end/100 * 8
+ case
when try_convert(decimal(3, 1), DEC10assessmentData.writ_groupReport) is not null
then cast(DEC10assessmentData.writ_groupReport as decimal(3, 1))
else 0
end/100 * 8
+ case
when try_convert(decimal(3, 1), DEC10assessmentData.writ_synthSummary) is not null
then cast(DEC10assessmentData.writ_synthSummary as decimal(3, 1))
else 0
end/100 * 8
+ case
when try_convert(decimal(3, 1), DEC10assessmentData.writ_critEvaluation) is not null
then cast(DEC10assessmentData.writ_critEvaluation as decimal(3, 1))
else 0
end/100 * 12)/40 * 100
from
DEC10assessmentData
왜 0.800000000
을 반환하지를?
열에 점수가 있으면 올바른 결과를 반환합니다.
값이 널인지 여부에 관계없이 100으로 나누고 항상 4 또는 8을 곱하기 때문에 –
@ NazirUllah 대소 문자 구분 여부에 관계없이 case 문에서 0을 반환하지만 무언가를 곱하면 0이어야합니다. – Ben
하나를 제외한 모든 경우를 주석 처리하고 하나씩 주석 처리를 해제하여 실제 문제가 어디에 있는지 확인하십시오. – KumarHarsh