转载自:http://www.newxing.com/Tech/Database/MSSQL/91.html
当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.
例如下面的SQL语句:
-
select id, (c1 + c2) as s from t1 where s > 100
SQL Server 报错: "列名 s 无效"
当然,写成
-
select id, (c1 + c2) as s from t1 where (c1 + c2) > 100
就没问题了.
可是当表达式复杂时就很繁琐了.
有没有可以在Where中使用这样的列名的办法?
或者有什么其他办法可以解决这类问题呢?
解决方法:
-
select t2.* from (select id, (c1 + c2) as c from t1) t2 where c > 100 --或者 select t2.* from (select id, c = c1+c2 from t1) t2 where c > 100
本文介绍了解决SQL Server中无法直接在WHERE子句使用SELECT子句中定义的别名的问题。通过使用子查询的方式,可以有效避免错误,并提供更简洁的解决方案。
1578

被折叠的 条评论
为什么被折叠?



