Sql server 2005 如何在SQL中使用用例,显示语法错误
我试图根据我的查询从表中检索一些记录,但它显示了一个错误 Msg 102,15级,状态1,第2行 “>Sql server 2005 如何在SQL中使用用例,显示语法错误,sql-server-2005,database,sql,Sql Server 2005,Database,Sql,我试图根据我的查询从表中检索一些记录,但它显示了一个错误 Msg 102,15级,状态1,第2行 “> 选择虚拟账本,(贷记金额借记)作为净额,案例净额 当净值>0时,则当净值
选择虚拟账本,(贷记金额借记)作为净额,案例净额
当净值>0时,则当净值<0时为“借方”,当净值<0时为“贷方”,否则为“无”
从dbo.vdebit vd内部在vd.LedgerId=vc.LedgerId上连接dbo.vCredit vc
首先,在您的案例中同时使用输入表达式和布尔表达式()。看起来您还试图将case语句的值赋给变量,但语法不正确。我相信这就是你想要的:
select vd.LedgerId,(CreditAmt-DebitAmt) AS NET,
CASE WHEN NET > 0 THEN 'Debit' WHEN NET < 0 THEN 'Credit' ELSE 'Nil' End
AS NetVal
from dbo.vdebit vd INNER JOIN dbo.vCredit vc ON vd.LedgerId=vc.LedgerId
选择日记账(贷记金额借记)作为净额,
如果净值>0,则当净值<0时为“借方”,然后为“贷方”,否则为“无”
作为NetVal
从dbo.vdebit vd内部在vd.LedgerId=vc.LedgerId上连接dbo.vCredit vc
使用搜索的大小写表达式时,语法如下:
CASE
WHEN NET > 0 THEN 'Debit'
WHEN NET < 0 THEN 'Credit'
ELSE 'Nil'
END
案例
当净值>0时,则为“借方”
当净值<0时,则为“信用”
否则为“零”
结束
所以,只要用CASE替换CASE-NET。多亏了Wikser和Trey,因为我遇到了一些语法问题,他们引起了我的注意,之后我的查询仍然有问题 问题是-Net是我的列的别名,当我在case语句中检查它时,它无法找到相同的列 错误
select vd.LedgerId,(CreditAmt-DebitAmt) AS NET,
CASE
WHEN NET > 0 THEN 'Debit'
WHEN NET < 0 THEN 'Credit'
ELSE 'Nil'
End
AS NetVal
from dbo.vdebit vd INNER JOIN dbo.vCredit vc ON vd.LedgerId=vc.LedgerId
选择日记账(贷记金额借记)作为净额,
案例
当净值>0时,则为“借方”
当净值<0时,则为“信用”
否则为“零”
终点
作为NetVal
从dbo.vdebit vd内部在vd.LedgerId=vc.LedgerId上连接dbo.vCredit vc
进行了更正
select vd.LedgerId,(CreditAmt-DebitAmt) AS NET,
CASE
WHEN (CreditAmt-DebitAmt) > 0 THEN 'Debit'
WHEN (CreditAmt-DebitAmt) < 0 THEN 'Credit'
ELSE 'Nil'
End
AS NetVal
from dbo.vdebit vd INNER JOIN dbo.vCredit vc ON vd.LedgerId=vc.LedgerId
选择日记账(贷记金额借记)作为净额,
案例
当(贷记金额借记)>0时,则为“借记”
当(贷记金额借记)小于0时,则为“贷记”
否则为“零”
终点
作为NetVal
从dbo.vdebit vd内部在vd.LedgerId=vc.LedgerId上连接dbo.vCredit vc
仍然显示相同的问题Wikser的答案是您的主要问题。我以前错过了。@Wikser:我不知道是什么问题,但这仍然不起作用。是的,您只能在t_sql的ORDER BY子句中使用别名,因为在句子的唯一部分,列的新名称是已知的。
select vd.LedgerId,(CreditAmt-DebitAmt) AS NET,
CASE
WHEN (CreditAmt-DebitAmt) > 0 THEN 'Debit'
WHEN (CreditAmt-DebitAmt) < 0 THEN 'Credit'
ELSE 'Nil'
End
AS NetVal
from dbo.vdebit vd INNER JOIN dbo.vCredit vc ON vd.LedgerId=vc.LedgerId