您可以在Access SQL中使用两个SET和WHERE语句而不是ELSE吗?

时间:2015-09-15 19:15:51

标签: sql ms-access jet-sql

我正在尝试使用两个SET和WHERE语句来代替ELSE语句。那可能吗?我在以下方面遇到语法错误:

UPDATE HRBI 
SET HRBI.[MktDISC%] = 0, HRBI.[MktDISC%] = (HRBI.[MarketMedianDISCUSD] / HRBI.[FY16StartingSalaryUSD])
WHERE HRBI.[FY16StartingSalaryUSD] = 0, HRBI.[FY16StartingSalaryUSD] <> 0;

2 个答案:

答案 0 :(得分:3)

首先,您的WHERE语句语法错误,您需要使用ANDOR条件运算符。第二,你是否看过WHERE条件;这是不可能的

WHERE HRBI.[FY16StartingSalaryUSD] = 0, HRBI.[FY16StartingSalaryUSD] <> 0;

这就像说WHERE col1 = 0 and col1 <> 0这是永远不可能的,因为在任何时候该字段都可以有一个值,但不能同时具有两个值。您可以说>= 0或使用OR条件

WHERE HRBI.[FY16StartingSalaryUSD] >= 0

你在SET条款中也犯了同样的错误。您发布的查询SET子句可以简化为

SET HRBI.[MktDISC%] = (HRBI.[MarketMedianDISCUSD] / HRBI.[FY16StartingSalaryUSD])

答案 1 :(得分:0)

Switch语句允许您完全按照您的要求执行操作;当FY16StartingSalaryUSD=0时,返回0,否则返回MarketMedianDISCUSD/FY16StartingSalaryUSD

UPDATE HRBI 
SET HRBI.[MktDISC%] = SWITCH(
  HRBI.[FY16StartingSalaryUSD] = 0, 0, 
  HRBI.[FY16StartingSalaryUSD] <> 0, HRBI.[MktDISC%] = (HRBI.[MarketMedianDISCUSD] / HRBI.[FY16StartingSalaryUSD])
相关问题