我正在尝试使用两个 SET 和 WHERE 语句代替 ELSE 语句。那可能吗?我收到以下语法错误:
UPDATE HRBI
SET HRBI.[MktDISC%] = 0, HRBI.[MktDISC%] = (HRBI.[MarketMedianDISCUSD] / HRBI.[FY16StartingSalaryUSD])
WHERE HRBI.[FY16StartingSalaryUSD] = 0, HRBI.[FY16StartingSalaryUSD] <> 0;
首先你的WHERE
语句语法错误,你需要使用AND
或OR
条件运算符。第二,你看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
,返回 0,否则返回MarketMedianDISCUSD/FY16StartingSalaryUSD
。
UPDATE HRBI
SET HRBI.[MktDISC%] = SWITCH(
HRBI.[FY16StartingSalaryUSD] = 0, 0,
HRBI.[FY16StartingSalaryUSD] <> 0, HRBI.[MktDISC%] = (HRBI.[MarketMedianDISCUSD] / HRBI.[FY16StartingSalaryUSD])