1

良い一日!

私は mssql を使用していて、 SelectMany() is .NET のようなことをしたいと思っています。

いくつかのコードを含むテーブルがあります。また、コードを取得していくつかのレコードを返す関数を保存しました。したがって、目標は、コードを含むテーブルからいくつかのレコードを選択し、関数を使用して各レコードを複数のレコードに変換することです。

たとえば、コードを含む表:

CODES
  14
  13
  42
  26
  55

たとえば、私の関数はすべてのコード区切りを返します。

14 -> 1, 2, 7, 14

そこで、10 から 20 までのすべてのコードを取得し、コードとその除数を含むテーブルを返す SELECT を書きたいと思います。

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 に答える