Присвоение результатов для FOR XML EXPLICIT UNION переменной

Этот запрос работает нормально

SELECT 1 AS TAG, NULL AS parent, 1 [dog!1]
UNION (SELECT 1,NULL, 3) 
FOR XML EXPLICIT, ROOT('dogs')

Я хотел бы присвоить его переменной. Это прекрасно работает без объединения:

DECLARE @x xml
SET @x = ((
  (SELECT 1 AS TAG, NULL AS parent, 1 [dog!1]
   FOR XML EXPLICIT, ROOT('dogs'))
  )) 

Как только я представляю союз, он не работает:

DECLARE @x xml
SET @x = ((
  (SELECT 1 AS TAG, NULL AS parent, 1 [dog!1]
   UNION (SELECT 1,NULL, 3) 
   FOR XML EXPLICIT, ROOT('dogs'))
   )) 

Пробовал все виды вещей. Чего мне не хватает

1 ответ

Решение

Вам просто нужно добавить еще один уровень подзапроса, например:

DECLARE @X XML = 
(
  SELECT * FROM
  (
    SELECT 1 AS TAG, NULL AS parent, 1 [dog!1]
    UNION 
    SELECT 1,NULL, 3
  )X
  FOR XML EXPLICIT, ROOT('dogs')
);

SELECT @X;
Другие вопросы по тегам