选择序列号作为行,作为用户定义函数的输入



我有一个标量值函数,它将一个整数作为其输入之一。我需要一个查询来为整数集(1,2,3,4,5)运行该函数。这就是我迄今为止所做的:

SELECT dbo.MyFunction('2016-05-13', Number) 
FROM (SELECT TOP 5 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS Number FROM SomeTable) AS T

这是有效的。有没有一种方法可以在没有FROM SomeTable的情况下做到这一点,因为我实际上没有使用表中包含的任何信息?

或者,是否有更干净的方法来编写整个查询?

自SQL Server 2008以来,我们有表值构造函数:

SELECT dbo.MyFunction('2016-05-13', Number) 
FROM (VALUES (1), (2), (3), (4), (5)) AS T(Number)

如果"5"是一个任意数,并且你需要它来遍历任何序列,那么你仍然需要使用某种类型的nums表。我参考这个问题及其答案,而不是在这里重复各种技术。

最新更新