Я пытаюсь использовать T-SQL 'For Xml Path' для создания списка значений, разделенных запятыми, из столбца.Кажется, это работает отлично, но проблема в том, что я хотел бы получить количество элементов в списке через запятую.Вот пример кода, который я использую для создания списка, разделенного запятыми:
Create Table #List ([col] varchar)
Insert Into #List Select '1';
Insert Into #List Select '2';
Insert Into #List Select '3'
Select ',' + [col] From #List For Xml Path('')
Это дает результаты 1,2,3, как и ожидалось, но нет способа получить счетчик, что есть3 предмета.Любая попытка добавить счетчик просто добавит его в xml.Я объединил этот код с cte, чтобы получить счет:
With CTE As (
Select
[col]
From
#List
)
Select
(Select ',' + [col] From #List For Xml Path('')) As [List],
Count(*) As [Count]
From
CTE
Есть ли более простой / понятный способ получить количество узлов без использования CTE?Было отмечено, что вы можете просто продублировать предложение from внутри внутреннего select и outside, но для этого необходимо синхронизировать предложения from.Я хочу получить и список, и количество, но предложение from написано только один раз.