我找到了更好的解决方法。这可能对其他人有帮助。实际上是将所有计算都包含在
WITH语句内部,而不是在视图核心中执行它们:
WITH Temp1 (ID)AS( -- Do some calculation and generate #Temp1 -- ... contains other selects), Temp2 (ID)AS( -- Do some calculation and generate #Temp2 -- ... contains other selects)-- Select statement 1SELECT * FROM FooJOIN Temp1 tmp on tmp.ID = Foo.IDWHERe Foo.Deleted = 1UNIOn-- Select statement 2SELECT * FROM FooJOIN Temp2 tmp on tmp.ID = Foo.IDWHERe Foo.Deleted = 1
结果当然
UNIOn是所有外围
SELECT声明的结果。



