Как использовать табличную функцию для созданных CTE данных

#sql-server #common-table-expression

#sql-сервер #common-table-expression

Вопрос:

Я просто хочу поработать с табличной функцией и протестировать ее на данных, созданных простым CTE, однако я не могу понять, как заставить функцию с табличным значением «видеть» CTE. Чего мне здесь не хватает?

 /* The below shows that I can SELECT the CSVField from my CTE CSVData */
WITH CSVData AS
(
    SELECT 'a,b,f,hello,yup' as CSVField
)
SELECT CSVField FROM CSVData
;


/* This Works and produces a table of the CSV Values */
SELECT * FROM dbo.Split('a,b,f,hello,yup', ',')


/* Does NOT Work: The below for whatever reason the TVF can't see the CTE as if it's not in Scope or for some other reason */
WITH CSVData AS
(
    SELECT 'a,b,f,hello,yup' as CSVField
)
SELECT c.* FROM dbo.Split(CSVData.CSVField, ',') c
;
  

Пример вывода таблицы

введите описание изображения здесь

Ответ №1:

Вы можете записать это как

     WITH CSVData AS
    (
        SELECT 'a,b,f,helloWorld,YesSir' as CSVField
    )
    SELECT c.*
    FROM dbo.Split( (SELECT CSVField FROM CSVData) , ',') c
    ;