SQL Server执行IF-ELSE语句报Invalid Column name 'Price'错误问询
SQL Server IF-ELSE 语句报错
Invalid Column Name 'Price' 解决方案 你遇到的报错并非因为需要在IF-ELSE语句中单独声明字段,核心问题是SQL Server 的流程控制IF语句不能直接引用表字段,必须先明确指定字段的来源表、取出对应的值后,才能做分支判断。
你当前直接写IF Price > 2000000的写法,SQL 无法识别Price属于哪张表、要取哪一行的数据做判断,因此会抛出无效列名的错误。
常见解决场景
场景1:判断某一指定行的Price值做分支输出
可以先将目标行的Price值读取到变量中,再做IF判断,示例代码如下:
-- 声明变量存储要判断的Price值 DECLARE @TargetPrice INT -- 替换【你的业务表名】为实际表名,此处示例取2019年的Price值 SELECT @TargetPrice = Price FROM 你的业务表名 WHERE Year = 2019 IF @TargetPrice > 2000000 BEGIN PRINT '哇!当前销售额300万远高于2018年的200万基准值'; END ELSE BEGIN PRINT '当前销售额未超过2018年的200万基准值'; END
注意:如果你的表存在多行数据,必须给SELECT语句加WHERE条件限定唯一行,否则变量只会存储查询结果最后一行的Price值。
场景2:需要对表中每一行数据都做判断输出
此时不需要使用IF-ELSE流程控制语句,改用查询层面的CASE WHEN语法即可实现逐行判断:
SELECT Year AS 年份, Price AS 销售额, CASE WHEN Price > 2000000 THEN '哇!当前销售额300万远高于2018年的200万基准值' ELSE '当前销售额未超过2018年的200万基准值' END AS 备注 FROM 你的业务表名
内容的提问来源于stack exchange,提问作者Kalos
相关产品推荐
相关产品推荐

