选择COL1 + COL2作为CalcColumn,* FROM TABLE WITH(NOLOCK)WHERE 100

时间:2011-10-13 07:19:08

标签: sql sql-server sql-server-2000

在使用基于计算值的条件的SELECT语句中,是否可以包括该计算值而不计算计算值两次 - 一次在选择中并再次在条件中?

我正在使用SQL Server 2000。

4 个答案:

答案 0 :(得分:3)

您可以将所有内容放入子查询中并从中选择

SQL语句

SELECT *
FROM   (
         SELECT COL1 + COL2 as CalcColumn
         FROM   Table
       ) q
WHERE  100 < CalcColumn 

但就性能而言,我希望这比原始查询

答案 1 :(得分:2)

如果在编写时使用查询,则不应有任何重大的性能损失。我相信SQL会为你处理它。我的问题是,你为什么要使用上个世纪的软件?

我刚试过

SELECT Debit, Credit, Debit+Credit AS CalcColumn FROM JDT1 WHERE CalcColumn > 100

在SQL 2005上,由几个人建议,错误是:     Msg 207,Level 16,State 1,Line 1     列名称“CalcColumn”无效。

答案 2 :(得分:0)

SELECT COL1+COL2 as CalcColumn,* 
FROM TABLE WITH (NOLOCK) 
WHERE 100 < CalcColumn
希望有所帮助。

答案 3 :(得分:0)

我通常创建一个视图,也有可重复使用的计算列。

CREATE VIEW TableView
AS
SELECT COL1+COL2 as CalcColumn,*  FROM TABLE WITH (NOLOCK)  

GO

SELECT * FROM TableView WHERE 100 < CalcColumn