如何在SWITCH语句中包含范围?

时间:2019-01-31 17:24:44

标签: sql ms-access

我有一个Switch语句,用于测试一系列值。不幸的是,当它检测到兼容值时,它会跳出Switch语句,并且不会完全迭代,从而使数据不一定正确。如何处理整个Switch语句?

这是我的Switch语句

Switch ((Score= 0.00), 1, (Score >0.00 & Score < (1/2)), 2, (Score >= 0.50 & Score < (2/3)), 3, (Score >= (2/3) & Score < 1.00), 4, true, 5) AS TotalScore

问题是当我有一个值,例如0.60时。该值应为3(因为它大于0.50但小于0.67)。但是,由于0.60> 0.00,因此我假设将TotalScore设置为2,因为这是我得到的。

我该如何编写一个Switch语句来列出一系列值并处理这些值?

谢谢。

2 个答案:

答案 0 :(得分:1)

&是MS Access中的字符串连接运算符。因此,当您打算使用AND时不合适。

就您而言,您可以简化逻辑:

Switch(Score = 0.00, 1,
       Score < 1.0/2, 2, 
       Score < 2.0/3, 3,
       Score < 1.00), 4,
       true, 5) AS TotalScore

switch按顺序评估条件,因此它在第一个匹配条件处停止。

答案 1 :(得分:0)

弄清楚了。只需从最高值开始并向下:

Switch (Score>= 1, 5, Score >= (2/3), 4, Score>= 0.50,  3, Score> 0, 2, Score= 0, 1) AS TotalScore