Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Реализация CROSS JOIN от таблицы и табличной функции  [new]
Degun
Member

Откуда:
Сообщений: 205
Есть таблица:
DECLARE @FilesListTable TABLE(name VARCHAR(100), codes VARCHAR(MAX))

и табличная функция:
ALTER function [dbo].[fn_ParseStrList](@ObjectList varchar(8000))  returns @Object table (ObjectName varchar(256) PRIMARY KEY)

возвращающая таблицу из уникальных строк, выделенных из входной строки следующего формата: str0[[,str1]...][,].
Нужно сделать CROSS JOIN что-то типа того:
SELECT fl.name, short.ObjectName
FROM @FilesListTable fl, [dbo].[fn_ParseStrList](fl.codes) AS short

Допустим в таблице @FilesListTable находится запись:

name='file1', codes='str0,str1,str2,str3,str4'

На выходе должны получиться такие записи:

name='file1', ObjectName='str0'
name='file1', ObjectName='str1'
name='file1', ObjectName='str2'
name='file1', ObjectName='str3'
name='file1', ObjectName='str4'

Но возникает ошибка:

The multi-part identifier "fl.codes" could not be bound.

Как можно реализовать такую возможность?
26 апр 17, 16:56    [20437007]     Ответить | Цитировать Сообщить модератору
 Re: Реализация CROSS JOIN от таблицы и табличной функции  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Degun,

CROSS APPLY
26 апр 17, 17:02    [20437025]     Ответить | Цитировать Сообщить модератору
 Re: Реализация CROSS JOIN от таблицы и табличной функции  [new]
Degun
Member

Откуда:
Сообщений: 205
Спасибо, вот так работает:
SELECT fl.name, short.ObjectName
FROM @FilesListTable fl cross apply [dbo].[fn_ParseStrList](fl.codes) short
26 апр 17, 17:10    [20437054]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить