oracle 函数嵌套的奇怪现象
两段看起来等价的SQL,
第一段SQL可以运行,第二段SQL却会报ORA-01722: 无效数字
b.STU_SCORE 会有null的数据
第一段SQL
ROUND (
AVG (
DECODE (
SCOPE .score_kind_id,
'3',
D .SCORE + 0,
b.STU_SCORE + 0
)
),2) AS totalScoreAvg,
第二段SQL
DECODE (
SCOPE .score_kind_id,
'3',
ROUND (AVG(D.SCORE + 0), 2),
ROUND (AVG(b.STU_SCORE + 0), 2)
) AS totalScoreAvg,
如果b.STU-SOUCE 有为nul l的数据,建议sql中对null转一下看看?
使用这个函数 AVG(b.STU-SCORE + 0)的时候,再加上nvl函数呢,这样试试: avg(nvl(b.stu_score), 2)