Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net SelectMany的SQL模拟_.net_Sql_Select - Fatal编程技术网

.net SelectMany的SQL模拟

.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

你好

我正在使用mssql,想做一些类似SelectMany is.NET的事情

我有一张有代码的桌子。我还有一个存储函数,它获取代码并返回多条记录。所以,目标是使用代码从表中选择多条记录,并使用my函数将每条记录转换为多条记录

例如,带有代码的表:

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,对不起-这是一个错误,它实际上是一个用户定义的表函数。但是,如何使用我的函数编写一个查询,将每个代码选择到多个记录中呢?哇,这真是一个不错的特性。正是我需要的。谢谢哇,真不错的功能。正是我需要的。谢谢