TALLY CTE
的另一種選擇。這將工作長達10K記錄...
WITH
E1(N) AS (select 1 from (values (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))dt(n)),
E2(N) AS (SELECT 1 FROM E1 a, E1 b), --10E+2 or 100 rows
E4(N) AS (SELECT 1 FROM E2 a, E2 b), --10E+4 or 10,000 rows max
cteTally(N) AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E4
)
select N
INTO #tempped
FROM cteTally
WHERE N <= 5
SELECT * FROM cteTally
SELECT * FROM #tempped
DROP TABLE #tempped
關於這個良好的部分是你可以創建一個視圖,它...從來沒有以後再擔心這個問題。也就是說,只要需要「數字表」加入,就可以引用該視圖。
create View [dbo].[cteTally] as
WITH
E1(N) AS (select 1 from (values (1),(1),(1),(1),(1),(1),(1),(1),(1),(1))dt(n)),
E2(N) AS (SELECT 1 FROM E1 a, E1 b), --10E+2 or 100 rows
E4(N) AS (SELECT 1 FROM E2 a, E2 b), --10E+4 or 10,000 rows max
cteTally(N) AS
(
SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM E4
)
select N from cteTally
GO
然後,你的榜樣,你只是這樣做:
SELECT N
INTO #tempped
FROM cteTally
WHERE N <=5
Sean Lange獨到的見解......
樣本數據和預期的結果將有助於回答這個問題(事實上,所有sql問題)。 –
你剛剛嘗試過嗎?我想它的工作 –
@EstebanP。它永遠不會工作。它會顯示錯誤信息msg數據庫中已經有一個名爲'#tempped'的對象@ –