从MS SQL Server中的XML类型列中选择多个列

从MS SQL Server中的XML类型列中选择多个列,sql,sql-server,xml,sql-server-2008,xmltype,Sql,Sql Server,Xml,Sql Server 2008,Xmltype,我使用XML列存储数据,这些数据可以具有动态节点和属性,即一个帐户节点可以有N个节点,我希望在单选查询中将这些所有节点检索为多个列,即Col1、Col2、Col3等 我尝试了下面的查询,但它返回垂直行,我希望有水平行。以下是预期产出。第1列,第2列,第n列 TAX-1 Amount|TAX-2 Amount|TAX-3 Amount...Nth Columns 1232 |4050 |57 样本数据 DECLARE @XML XML SET @XML='<

我使用XML列存储数据,这些数据可以具有动态节点和属性,即一个帐户节点可以有N个节点,我希望在单选查询中将这些所有节点检索为多个列,即Col1、Col2、Col3等

我尝试了下面的查询,但它返回垂直行,我希望有水平行。以下是预期产出。第1列,第2列,第n列

TAX-1 Amount|TAX-2 Amount|TAX-3 Amount...Nth Columns
1232        |4050        |57   
样本数据

DECLARE @XML XML
SET @XML='<Info>
   <Demand>
      <Tax ID="1">
         <Head>1232</Head>
         <Int>10</Int>
         <OtherFee>5</OtherFee>        
      </Tax>
      <Tax ID="2">
         <Head>4050</Head>
         <Int>10</Int>
         <OtherFee>5</OtherFee>         
      </Tax>
       <Tax ID="3">
         <Head>57</Head>
         <Int>10</Int>
         <OtherFee>5</OtherFee>         
      </Tax>
    </Demand>
   <Collection>      
      <Tax ID="1">
         <Head>500</Head>
         <Int>10</Int>
         <OtherFee>5</OtherFee>         
      </Tax>
      <Tax ID="2">
         <Head>800</Head>
         <Int>10</Int>
         <OtherFee>5</OtherFee>         
      </Tax>
   </Collection>   
</Info>'

欢迎任何建议或意见

谢谢
Suresh

这可以通过使用动态枢轴技术轻松完成。
SELECT T.C.value('Head[1]', 'varchar(max)') as Amount,
T.C.value('@ID', 'varchar(max)') as Head
FROM @XML.nodes('/Info/Demand/Tax') as T(C)