2011-08-16 60 views
-2

我有以下查询@myvar如何在以下查询中乘以(@myvar * -1)。我如何在'case'语句中通过-1来声明变量?

SELECT 
     Date, 
     case when Position > 0 then 
      Position * Mark * case when SecurityType in ('Equity','Equity Option') Then Mark * 100 else 1 end 
     else 
      0 
     end var, 
     case when Position < 0 then 
      Position * Mark * case when SecurityType in ('Equity','Equity Option') Then .Mark * 100 else 1 end 
     else 
      0 
     end (@myvar * -1),Id FROM Mytable 

- 我收到提示

帮助我:)

+1

什么是你想怎么办? – gbn

+1

@什么类型是myvar? – msarchet

+0

myvar是十进制的(18,6) – Neo

回答

1

嘿所有我得到的答案

我只需要做

case when Position < 0 then 
    -1 * Position * Mark * case when SecurityType in ('Equity','Equity Option') Then Mark * 100 else 1 end** 
     else 
      0 
     end Myvar , -- myvar will be (-) because in above condition i multiply -1 
     Id 
FROM mytable 
1

你是你最后一次结束后缺少一个逗号指定一个新列。如果你只是返回-1 * myvar,那么表达式是正确的。

SELECT 
     Date, 
     case when Position > 0 then 
      Position * Mark * case when SecurityType in ('Equity','Equity Option') Then Mark * 100 else 1 end 
     else 
      0 
     end var, 
     case when Position < 0 then 
      Position * Mark * case when SecurityType in ('Equity','Equity Option') Then Mark * 100 else 1 end 
     else 
      0 
     end, 
     (@myvar * -1) -- I'm getting error 
+0

还缺少a, 'Date'后 – xan

+0

最后的声明就像 end myvar, Id – Neo

+1

'end @ myvar'不合法,你需要一个运算符'end + ??'或逗号 - 你需要扩展你的问题 –

相关问题