用例的多重计算

时间:2018-11-22 12:40:36

标签: sql sql-server

我有一个数据集,我需要执行一个计算,如果没有计算其他列,则填充一列。我正在尝试使用CASE语句来执行此操作,但是我在语法上不太走运。

CASE WHEN [W/O] = 'O' THEN Net * (NetShare/100) ELSE Gross * (GrossShare/100)
     WHEN [W/O] = 'W' THEN (NetShare/100)
END AS 'TEST'

任何帮助将不胜感激。

非常感谢

3 个答案:

答案 0 :(得分:0)

这是您想要的吗?

(CASE WHEN [W/O] = 'O' THEN Net * (NetShare/100)
      WHEN [W/O] = 'W' THEN (NetShare/100)
      ELSE Gross * (GrossShare/100) 
 END) AS TEST

答案 1 :(得分:0)

认为这可能只是OP的CASE表达式格式错误的一种情况。 ELSE始终是最后一个表达式;它不能在中间。因此,您需要执行以下操作:

CASE WHEN [W/O] = 'O' THEN Net * (NetShare/100)
     WHEN [W/O] = 'W' THEN (NetShare/100)
     ELSE Gross * (GrossShare/100)
END AS TEST

答案 2 :(得分:0)

一个CASE表达式对每个WHEN求值,如果没有匹配项,则使用ELSE,它必须位于所有WHEN之后。您的ELSE放错了位置。这是你的意思吗?

CASE 
  WHEN [W/O] = 'O' THEN Net * (NetShare/100) 
  WHEN [W/O] = 'W' THEN (NetShare/100)
  ELSE Gross * (GrossShare/100)
END AS 'TEST'