下面的示例在SQLServer中不起作用。table1.field1也是一个字符(3)
DECLARE @CALCULATED_FIELD char(3);
SELECT table1.field1
,table1.field2
,CASE
WHEN table1.field2 = '1' THEN @CALCULATED_FIELD = table1.field1
ELSE @CALCULATED_FIELD = 'ALL'
END
FROM table1
有人知道案件陈述的问题吗?
5条答案
按热度按时间qvtsj1bj1#
结果
CASE
表达式必须赋给变量,但不允许在同一语句中从表中返回任何列。因此:
在语法上是有效的,尽管它最终将赋值给变量
CASE
获取的最后一行的表达式。根据变量的名称,我怀疑您需要一个3d列,该列将由
CASE
:请参阅简化的演示。
z3yyvxxp2#
sql服务器
SELECT
语句既可以指定变量值,也可以返回行,但不能两者都指定。您可能打算:这将为变量分配最大值——如果表只有一行,则是唯一的值。如果表中没有行,则会分配变量
'ALL'
.hpcdzsge3#
在这种情况下我会使用定标器函数
然后将查询更改为
szqfcxe24#
像这样的表达
A=B
不是标量值。因此,当您运行以下查询时,它将失败,并且您将得到一个错误Incorrect syntax near '='
.对你来说
不是有效的表达式,您的意思可能是
请注意,您可以运行如下查询
它的工作原理是
h7wcgrx35#
太多了。对于create函数,我没有任何权限,我们不能在生产环境中执行。但会有用的。不错。
我用了福帕斯的例子,它非常适合我。