SelectMany的SQL模拟

时间:2013-05-12 11:51:42

标签: .net sql select

美好的一天!

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

1 个答案:

答案 0 :(得分:4)

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

select  c.Code
,       d.Divisor
from    Codes as c
outer apply
        dbo.YourTableUdf(c.Code) as d