我试图改进以下CASE语句来计算差异只有一次。我这样做是为了避免负数:简化CASE当SQL语句
SELECT (CASE WHEN ((SELECT 100 - (SELECT COUNT(CustomerId) FROM Customers)) > 0)
THEN (SELECT 100 - (SELECT COUNT(CustomerId) FROM Customers))
ELSE (0)
END)
这不仅看起来愚蠢,但也不是线程安全的。我尝试了以下,但我收到一条错误消息“无效的列名'差异'。”
SELECT (CASE WHEN ((SELECT 100 - (SELECT COUNT(CustomerId) FROM Customers) as diff) > 0)
THEN (diff)
ELSE (0)
END)
这怎么可以简化?是否有一个已经完成这项工作的内置SQL函数?
编辑:对不起,忘记提及select语句是在视图声明内,所以我不能声明变量。
只是因为,我会使用SET而不是SELECT在第三条语句,使之清楚,你不打表第二次。 (今天战斗交易...) – 2011-01-08 00:32:20
@Philip凯利:没有更多的上下文,它不知道最后选择是否返回结果给调用者... – 2011-01-08 00:36:05