2011-08-09 17 views
1

如何重写此SQL查询以避免在ORDER BY中除以零错误?SQL零分区

SELECT * FROM table WHERE age>'30' ORDER BY (a/b) DESC 
+2

确保'B'是永远为零?更严重的是,当'b' *是*零时,您想要订购什么? –

+0

@Oli Charlesworth我希望如果b = 0,那么这个值就是零,而不是一个特定的值。 –

回答

9
ORDER BY CASE WHEN b != 0 THEN a/b ELSE 0 END DESC 
+5

或许'b <> 0',如果b是一个有符号的值。 –

+1

OP应该意识到这将是列表底部具有'B = 0'的所有行。 – JNK

+0

按照他的评论,这就是他想要的。 –