Sql server SQL Server 2008中的If条件

Sql server SQL Server 2008中的If条件,sql-server,sql-server-2008,Sql Server,Sql Server 2008,首先,我对SQLServer2008中的IF条件一无所知 我有一个表[AccountHistory]w2列AccountType和Amount AccountType可以有不同的值(存款、取款、利润等),我需要一个查询来执行以下操作: If AccountType = Withdrawal Then Amount = Amount * -1 例如: AcountType Amount ----------------------------- Deposit

首先,我对SQLServer2008中的
IF
条件一无所知

我有一个表
[AccountHistory]
w2列
AccountType
Amount

AccountType
可以有不同的值(
存款、取款、利润等
),我需要一个查询来执行以下操作:

If AccountType = Withdrawal Then Amount = Amount * -1 
例如:

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

除了John Gibb提供的答案(原则上完全正确),我还要注意您的逻辑-是否存在阻止用户在系统上下文中输入负值的限制

如果不是,您可能会在不经意间将负数变为正数,并且随着数据收集的增长,会得到一些非常奇怪的结果。此外,此查询只能运行一次-一旦存在其他数据,再次执行它将使原始负值变为正值

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

听起来你可以直接用
更新
语句来实现这一点为什么我得到-ve???!!你被否决是因为你表现出完全缺乏理解和/或努力。在询问有关堆栈溢出的帮助之前,您至少应该尽最小的努力来理解您的问题,因为这样的基本问题不会增加堆栈溢出的价值。有时生活就是这样残酷。我在ASP页面中遇到了错误:关键字“Update”附近的语法不正确,尽管它在查询构建中工作。查询工作正常,但我在ASP页面中使用此查询时出现上述错误,我不知道为什么…有其他选择吗?请仔细检查您的命令类型是否未使用存储过程。
update AccountHistory
set amount = amount * -1
where accounttype = 'Withdrawal'
and amount > 0;