2014-01-10 71 views
-6

条件首先,我对此事一无所知IF条件SQL Server 2008中如果在SQL Server 2008

我有一个表[AccountHistory] wWith 2列AccountType & Amount

AccountType可以有不同的值(Deposit, Withdrawal, Profit,...etc),我需要一个查询来执行以下操作:

If AccountType = Withdrawal Then Amount = Amount * -1 

例如:

AcountType   Amount 
----------------------------- 
    Deposit    100 
    Withdrawal   -150 
    Profit    220 
    Withdrawal   -200 
+0

听起来像你可以直接用'UPDATE'语句做到这一点 –

+0

为什么我得到了-ve ??? !! –

+1

由于您表现出完全缺乏理解力和/或努力,因此您会被拒绝投票。在请求堆栈溢出帮助之前,您应该至少在理解您的问题上表现出最小的努力,因为这些基本问题不会增加堆栈溢出的价值。生活有时候很残酷。 –

回答

0
update AccountHistory 
set amount = amount * -1 
where accounttype = 'Withdrawal'; 
+0

我在ASP页面出现错误:关键字'更新'附近的语法错误虽然它在查询生成器中工作 –

+0

没有足够的信息来帮助,因为该查询应该有效。 –

+0

是的查询工作正常,但我在ASP页面中使用此查询时得到上述错误我不知道为什么...有没有其他的选择? –

0

除了由约翰提供的答案吉布(原则上完全正确),我也会在这里观察你的逻辑 - 是否有任何限制阻止用户在系统环境中输入负值?

如果不是这样,那么随着数据收集的增长,您可能会无意中将负数转为正数,并且会得到一些非常奇怪的结果。此外,该查询只能运行一次 - 一旦出现附加数据,再次执行它就会将原始负值转换为正值。

update AccountHistory 
set amount = amount * -1 
where accounttype = 'Withdrawal' 
and amount > 0;