#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
;