我有一個名爲A.它只有一個記錄與一個字段的表。它是一個名爲數字的整數。 我想創建一個具有A.number記錄的視圖,每個記錄都是小於A.number的數字之一。創建一個整數視圖?
例如:
選擇A.number -----> 5
視圖應該顯示5個記錄0 1 2 3 4
PS:這是一個真正的問題,我簡化了很多。真正的問題就像是將預算在固定的時間段內分配到每一天。
我有一個名爲A.它只有一個記錄與一個字段的表。它是一個名爲數字的整數。 我想創建一個具有A.number記錄的視圖,每個記錄都是小於A.number的數字之一。創建一個整數視圖?
例如:
選擇A.number -----> 5
視圖應該顯示5個記錄0 1 2 3 4
PS:這是一個真正的問題,我簡化了很多。真正的問題就像是將預算在固定的時間段內分配到每一天。
這聽起來有點像家庭作業,所以我很謹慎地提供代碼。
雖然我可以給一個指針來解決問題。您使用遞歸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
如果您的表的數量將< 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是一個鏈接到博客文章的想法有一個「數字表」方便。
這是作業,還是來自某個地方的謎題? –
沒有一個。一個真正的問題。主要問題更復雜。我只是簡化了它。 – Masoud