SQL Server for xml返回自定义xml格式?

ca9*_*3d9 0 xml sql-server xquery sql-server-2008

我有以下SQL

with X(x) as (select 'a' union select 'b' )
   , Y(y) as (select 1 union select 2 union select 3)
select x, y from X cross join Y
for xml path('')
Run Code Online (Sandbox Code Playgroud)

然后它回来了

<x>a</x>
<y>1</y>
<x>a</x>
<y>2</y>
<x>a</x>
<y>3</y>
<x>b</x>
<y>1</y>
<x>b</x>
<y>2</y>
<x>b</x>
<y>3</y>
Run Code Online (Sandbox Code Playgroud)

是否有可能使它返回

<a><y>1</y><y>2</y><y>3</y></a>
<b><y>1</y><y>2</y><y>3</y></b>
Run Code Online (Sandbox Code Playgroud)

要么

<x v="a"><y>1</y><y>2</y><y>3</y></x>
<x v="b"><y>1</y><y>2</y><y>3</y></x>
Run Code Online (Sandbox Code Playgroud)

或者也许我应该使用xquery FLWOR进行排列?

mar*_*c_s 6

如果你使用这个:

WITH X(x) AS (SELECT 'a' UNION SELECT 'b' )
   , Y(y) AS (SELECT 1 UNION SELECT 2 UNION SELECT 3)
SELECT
    x AS "@v",
    (SELECT y FROM Y 
     FOR XML PATH(''), TYPE)
FROM X 
FOR XML PATH('X')
Run Code Online (Sandbox Code Playgroud)

你应该得到一个输出:

<X v="a">
  <y>1</y>
  <y>2</y>
  <y>3</y>
</X>
<X v="b">
  <y>1</y>
  <y>2</y>
  <y>3</y>
</X>
Run Code Online (Sandbox Code Playgroud)

我不知道如何a在XML输出(<a>......</a>)中使用column()的值作为XML标记.