.net SelectMany的SQL模拟
你好 我正在使用mssql,想做一些类似SelectMany is.NET的事情 我有一张有代码的桌子。我还有一个存储函数,它获取代码并返回多条记录。所以,目标是使用代码从表中选择多条记录,并使用my函数将每条记录转换为多条记录 例如,带有代码的表:.net SelectMany的SQL模拟,.net,sql,select,.net,Sql,Select,你好 我正在使用mssql,想做一些类似SelectMany is.NET的事情 我有一张有代码的桌子。我还有一个存储函数,它获取代码并返回多条记录。所以,目标是使用代码从表中选择多条记录,并使用my函数将每条记录转换为多条记录 例如,带有代码的表: CODES 14 13 42 26 55 例如,my函数返回所有代码分隔符: 14 -> 1, 2, 7, 14 所以我想写一个SELECT,它获取10到20之间的所有代码,并返回带有代码及其除数的表: CODE DI
CODES
14
13
42
26
55
例如,my函数返回所有代码分隔符:
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
可以使用“外部应用”为左侧表格中的每一行运行自定义项:
select c.Code
, d.Divisor
from Codes as c
outer apply
dbo.YourTableUdf(c.Code) as d
请提供存储过程的代码。过程不能用于查询。可以使用用户定义的函数。所以,如果您可以将过程重写为一个表用户定义的查询,这是可能的。@Andomar,对不起-这是一个错误,它实际上是一个用户定义的表函数。但是,如何使用my函数编写一个查询,将每个代码选择到多个记录中呢?请提供存储过程的代码。过程不能用于查询。可以使用用户定义的函数。所以,如果您可以将过程重写为一个表用户定义的查询,这是可能的。@Andomar,对不起-这是一个错误,它实际上是一个用户定义的表函数。但是,如何使用我的函数编写一个查询,将每个代码选择到多个记录中呢?哇,这真是一个不错的特性。正是我需要的。谢谢哇,真不错的功能。正是我需要的。谢谢