0

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

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

2 回答 2

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])
于 2015-09-15T19:23:16.820 回答
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])
于 2016-05-13T02:55:22.683 回答