2011-11-13 80 views
0

我有一個名爲A.它只有一個記錄與一個字段的表。它是一個名爲數字的整數。 我想創建一個具有A.number記錄的視圖,每個記錄都是小於A.number的數字之一。創建一個整數視圖?

例如:

選擇A.number -----> 5

視圖應該顯示5個記錄0 1 2 3 4

PS:這是一個真正的問題,我簡化了很多。真正的問題就像是將預算在固定的時間段內分配到每一天。

+0

這是作業,還是來自某個地方的謎題? –

+0

沒有一個。一個真正的問題。主要問題更復雜。我只是簡化了它。 – Masoud

回答

1

這聽起來有點像家庭作業,所以我很謹慎地提供代碼。

雖然我可以給一個指針來解決問題。您使用遞歸CTE,其中每次迭代都會在前一次迭代中添加一次。只是一定要設置MAXRECURSION選項,如果你會檢查數> 101可以使用標量子查詢視圖中的關鍵原始表:


WITH numbers (n) AS (
    SELECT 0 UNION ALL 
    SELECT 1 + n FROM numbers WHERE n < (select number from a) -1) 
SELECT n FROM numbers 
OPTION (MAXRECURSION 500) --example 
+0

這不是一個家庭作業。請參閱編輯過的帖子。 – Masoud

+0

我無法理解你的答案。在一個視圖中迭代? – Masoud

+0

以你的口吻告訴你,這不是作業 –

0

如果您的表的數量將< 2048,你是SQL Server上,這會爲你工作:

CREATE VIEW MyView AS 
    SELECT number 
    FROM master..spt_values 
    WHERE type = 'p' 
     AND number < (SELECT value FROM yourTable) 

或者你可以考慮用適當大小創建自己的數字表,以滿足您的應用程序,如果你需要更高的限制,或者是而不是在提供給您的SQL Server上。 Here是一個鏈接到博客文章的想法有一個「數字表」方便。