Как вывести имена в списке строк в одну строку?
Предположим, у меня есть такие данные:
SELECT XName FROM X_Table --(table has other columns too)
XName
-------------
Foo
Bar
Как получить такие значения:
["foo", "bar"]


Я думаю, вы смотрите на комбинацию синтаксиса преобразования и отмены преобразования JSON, как показано ниже.
Declare @js nvarchar(max)
SET @js= (SELECT XName FROM X_Table for json path)
select * from OPENJSON (@js) WITH ( Xname nvarchar(max) N'$.XName')
И если вы хотите избежать использования переменной @js, вы можете сделать
select * from OPENJSON
((SELECT XName FROM XTable for json path))-- note double parenthesis
WITH ( Xname nvarchar(max) N'$.XName')
Из примера, приведенного по ссылке Г.Стойнева, можно сделать следующее:
SELECT JSON_QUERY
(
(
SELECT JSON_QUERY
(
'[' + STUFF(( SELECT ',' + '"' + convert(varchar(10), XName) + '"'
FROM dbo.X_Table
FOR XML PATH('')),1,1,'') + ']'
) Categories
FOR JSON PATH , WITHOUT_ARRAY_WRAPPER
), '$.Categories'
)
@ G.Stoynev Я проверил ваш вариант повторяющегося вопроса, но я не могу получить все результаты в одной строке. Какая-нибудь помощь по этому поводу?