在使用基于计算值的条件的SELECT语句中,是否可以包括该计算值而不计算计算值两次 - 一次在选择中并再次在条件中?
我正在使用SQL Server 2000。
答案 0 :(得分:3)
您可以将所有内容放入子查询中并从中选择
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