我正在尝试使用两个SET和WHERE语句来代替ELSE语句。那可能吗?我在以下方面遇到语法错误:
UPDATE HRBI
SET HRBI.[MktDISC%] = 0, HRBI.[MktDISC%] = (HRBI.[MarketMedianDISCUSD] / HRBI.[FY16StartingSalaryUSD])
WHERE HRBI.[FY16StartingSalaryUSD] = 0, HRBI.[FY16StartingSalaryUSD] <> 0;
答案 0 :(得分:3)
首先,您的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])
答案 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])