0
私は次のクエリを持っている:選択した列のすべての値がNULL
あるときはなぜSQL Serverは、計算のために0を返さない
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
コメントはすべて1つを除いてコメントを外し、実際に問題がどこにあるかを確認します。 – KumarHarsh