我有一个名为A的表。它只有一个带一个字段的记录。它是一个名为number的整数。 我想创建一个包含A.number记录的视图,每个记录都是少于A.number的数字之一。
例如:
选择A.number -----> 5
该视图应显示5条记录0 1 2 3 4
P.S:这是一个真正的问题,我简化了很多。真正的问题就是将固定期间的预算划分为每天。答案 0 :(得分: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
答案 1 :(得分:0)
如果你的桌子号码是&lt; 2048,你在SQL Server上,这将适合你:
CREATE VIEW MyView AS
SELECT number
FROM master..spt_values
WHERE type = 'p'
AND number < (SELECT value FROM yourTable)
或者,您可以考虑创建自己的Numbers表,其大小适合您的应用程序,如果您需要更高的限制,或者不是在提供给您的SQL Server上。 Here是一篇关于有关“数字表”的想法的博客文章的链接。