次の方法で共有


パスが data() として指定された列名

列名として指定されたパスが "data()" の場合、値は生成された XML でアトミック値として扱われます。 シリアル化の次の項目もアトミック値である場合は、スペース文字が XML に追加されます。 これは、リスト型指定された要素と属性値を作成する場合に便利です。 次のクエリでは、その製品モデルの製品モデル ID、名前、および製品の一覧を取得します。

USE AdventureWorks2012;  
GO  
SELECT ProductModelID       AS "@ProductModelID",  
       Name                 AS "@ProductModelName",  
      (SELECT ProductID AS "data()"  
       FROM   Production.Product  
       WHERE  Production.Product.ProductModelID =   
              Production.ProductModel.ProductModelID  
      FOR XML PATH (''))    AS "@ProductIDs"  
FROM  Production.ProductModel  
WHERE ProductModelID= 7   
FOR XML PATH('ProductModelData');  

入れ子になった SELECT は、製品 ID の一覧を取得します。 製品 ID の列名として "data()" を指定します。 PATH モードでは行要素名に空の文字列が指定されているため、行要素は生成されません。 代わりに、親 SELECT の <ProductModelData> 行要素の ProductIDs 属性に割り当てられた値が返されます。 結果を次に示します。

<ProductModelData ProductModelID="7"

ProductModelName="HL Touring Frame"

ProductIDs="885 887 888 889 890 891 892 893" />

こちらもご覧ください

FOR XML で PATH モードを使用する