2012-01-24 168 views
2

我有一個sql查詢,需要在整個查詢中多次重複相同的SELECT語句作爲其他計算的輸入。如何避免兩次寫入SQL Server查詢以避免重複?

如何編寫查詢以便我只定義一次重複的SELECT SQL語句?有沒有一種方法可以避免在查詢中重複出現錯誤?

UPDATE: 在這種情況下從SELECT返回的數據被預期在箱子

CTE和表變量的另外20%的情況下和100-200行最大的80%< 100行這兩個看起來都是有效的答案 - 但是你怎麼知道在任何情況下哪一個更合適?

+0

搜索CTE。 –

+0

@ypercube - 'CTE'在這裏不太適合,因爲它只是針對一個查詢。一旦我選擇*從CTE'下一個查詢不能看到它,除非我重新定義CTE哪種類型的目的失敗:) – JNK

+0

@JNK:在這種情況下,視圖可能會得心應手。我以爲OP想要在同一個查詢中多次使用相同的SELECT。 –

回答

7

使用select插入Temp表或表變量。 (如果您認爲數據集很小,請使用表變量,如果數據集很大,則使用臨時表)。然後,在所有後續查詢中,加入臨時表或表變量,就像任何其他表一樣。

+1

其他考慮因素 - 臨時表可以被索引並且有約束,哪些變量不能。臨時表也在內部作用域中可見,而表格變量僅在直接作用域中可見。 – JNK

+0

雖然表變量的tempdb鎖定和併發問題的潛力較低。這並不總是一個明確的選擇。 – mwigdahl