我可以在同一视图中使用稍后在SQL Server视图中计算的列吗?我可以在同一视图中使用稍后在SQL Server视图中计算的列吗?
比方说,我有以下看法:
Select
t1.StartMile, t2.EndMile, t2.EndMile- t1.StartMile as TotMile
from
TableStarts as t1
inner join
TableEnds as t2 on t1.Id = t2.Id
有编辑视图做以下
Select
t1.StartMile, t2.EndMile, t2.EndMile - t1.StartMile as TotMile,
TotMile + 30 as EvenMoreMiles
我尝试这样的方式,得到了错误:
Invalid column name 'TotMile'
请不要告诉我使用t2.EndMile - t1.StartMile + 30 as EvenMoreMiles
。 TotMiles
在我的实际代码中是一个很长的案例陈述。
我宁愿不必创建一个中间视图。
我使用SQL Server 2005的
以后添加
感谢所有的答案。我会全力投入。
的答案会提出下面的新问题:
鉴于有数千行和TotMiles
如下所示,它给出的答案将是最有效的?或者创建中间视图最有效率?
CASE WHEN t .TaskType = 1 and t .StartTime < '1/1/2012'
THEN (tv.EndMile - tv.StartMile)
WHEN NOT (t .Location1_PKey = c.pkey OR t .Location2_PKey = c.pkey)
then (tv.EndMile - tv.StartMile)
WHEN (tv.EndMile - tv.StartMile) < 31 Then 0
ELSE (tv.EndMile - tv.StartMile - 30)
END AS MilesAdjusted2012,
当谈到效率问题时,答案通常是“取决于” - 我们不知道你的数据是什么样的,你有什么指数等等。我们也不知道是否即使假设最差的解决方案已经足够有效达到您的目的,或者我们的表现最佳的答案仍然不足以满足您的情况/ – 2011-12-21 20:32:56
感谢Damien。我很懒。 – 2011-12-21 20:45:35