SQL analogue of SelectMany



大家好!

我正在使用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

最新更新