【发布时间】:2011-10-13 07:19:08
【问题描述】:
在使用基于计算值的条件的 SELECT 语句中,是否可以在不计算计算值两次的情况下包含该计算值 - 一次在选择中,再次在条件中?
我使用的是 SQL Server 2000。
【问题讨论】:
标签: sql sql-server sql-server-2000
在使用基于计算值的条件的 SELECT 语句中,是否可以在不计算计算值两次的情况下包含该计算值 - 一次在选择中,再次在条件中?
我使用的是 SQL Server 2000。
【问题讨论】:
标签: sql sql-server sql-server-2000
您可以将所有内容放入子查询中并从中进行选择
SELECT *
FROM (
SELECT COL1 + COL2 as CalcColumn
FROM Table
) q
WHERE 100 < CalcColumn
但就性能而言,我预计这会比您的原始查询慢。
【讨论】:
如果您在编写查询时使用查询,则不会有任何显着的性能损失。我相信 SQL 会为你处理它。我的问题是,你为什么要使用上个世纪的软件?
我刚试过
SELECT Debit, Credit, Debit+Credit AS CalcColumn FROM JDT1 WHERE CalcColumn > 100
根据几个人的建议,在 SQL 2005 上,错误是: 消息 207,第 16 层,状态 1,第 1 行 列名“CalcColumn”无效。
【讨论】:
SELECT COL1+COL2 as CalcColumn,*
FROM TABLE WITH (NOLOCK)
WHERE 100 < CalcColumn
希望有帮助。
【讨论】:
我通常创建一个视图以具有可重复使用的计算列。
CREATE VIEW TableView
AS
SELECT COL1+COL2 as CalcColumn,* FROM TABLE WITH (NOLOCK)
GO
SELECT * FROM TableView WHERE 100 < CalcColumn
【讨论】: