大家好!
我正在使用mssql,并希望做一些像SelectMany()是。net。
我有一个表与一些代码。此外,我已经存储的函数,获得代码,并返回几个记录。因此,目标是从带有代码的表中选择几个记录,并使用我的函数将每个记录转换为几个记录。
例如,代码为
的表CODES
14
13
42
26
55
例如,我的函数返回所有代码分隔符:
14 -> 1, 2, 7, 14
所以我想写SELECT,获取10到20之间的所有代码,并返回包含代码及其除数的表:
CODE DIVISOR
13 1
13 13
14 1
14 2
14 7
14 14
使用c#和SelectMany()可以这样做:
codes.Where(code => code > 10 && code < 20).SelectMany(code => GetDivisors(code))
但是如何使用MSSQL来完成呢?
您可以使用outer apply
为左边表中的每一行运行一个UDF:
select c.Code
, d.Divisor
from Codes as c
outer apply
dbo.YourTableUdf(c.Code) as d