您可以在 Access SQL 中使用两个 SET 和 WHERE 语句来代替 ELSE 吗?

Can you use two SET and WHERE Statements instead of ELSE in Access SQL?

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

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

首先你的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])

Switch 语句允许您完全按照您的要求进行操作;当 FY16StartingSalaryUSD=0、return 为 0 时,否则 return MarketMedianDISCUSD/FY16StartingSalaryUSD.

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