1

再会!

我正在使用 mssql 并想做类似 SelectMany() is .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 来完成呢?

4

1 回答 1

4

您可以使用outer apply为左侧表中的每一行运行 UDF:

select  c.Code
,       d.Divisor
from    Codes as c
outer apply
        dbo.YourTableUdf(c.Code) as d
于 2013-05-12T12:01:52.643 回答