2016-08-01 10 views
2

私は、適切な電子メールをアセンブルするために必要なすべてのXML電子メールアプリケーションXMLを送信するためのクエリを作成しています。入れ子にされた要素が正しく機能するようには見えません。SQL XMLネストされた要素

私は

<EmailsToBeSent> 
     <EmailToBeSent> 
      <ReferenceId>1</ReferenceId> 
       <Tags> 
        <Tag> 
         <Name>ToAddress</Name> 
         <Value>[email protected]</Value> 
        </Tag> 
        <Tag> 
         <Name>CCAddress</Name> 
         <Value>[email protected]</Value> 
        </Tag> 
        <Tag> 
         <Name>FromAddress</Name> 
         <Value>[email protected]</Value> 
        </Tag> 
       </Tags> 
      <SomethingElse>'asASas'</SomethingElse>     
     </EmailToBeSent> 
    </EmailsToBeSent> 

は、これまでのところ、私が得ている最も近いがあるように見えるXMLを取得しようとしています:

<EmailsToBeSent> 
    <EmailToBeSent> 
     <ReferenceId>1</ReferenceId> 
     <Tags> 
      <Tag> 
       <Name>ToAddress</Name> 
       <Value>[email protected]</Value> 
       <Name>CCAddress</Name> 
       <Value>[email protected]</Value> 
       <Name>FromAddress</Name> 
       <Value>[email protected]</Value> 
      </Tag> 
     </Tags> 
     <SomethingElse>'asASas'</SomethingElse>     
    </EmailToBeSent> 
</EmailsToBeSent> 
+1

"EmailTable"と "RefTable"を表すいくつかの#tempテーブルを、サンプルデータと共にいくつかのinsert文と共に作成してください。 – granadaCoder

答えて

2

するだけでセパレータを追加します。その結果

SELECT 
    ReferenceId, 
    (SELECT 
     'ToAddress' AS "Tag/Name", 
     ToAddress AS "Tag/Value", 
     'CCAddress' AS "Tag/Name", 
     CCAddress AS "Tag/Value", 
     'FromAddress' AS "Tag/Name", 
     FromAddress AS "Tag/Value" 
    FROM 
     EmailTable AS ET 
    WHERE 
     ET.ReferenceId = RT.ReferenceId 
    FOR XML PATH('Tags'), TYPE), 
    'asASas' AS SomethingElse 
FROM 
    RefTable AS RT 
FOR XML PATH('EmailToBeSent'), ROOT('EmailsToBeSent') 

グループ間。

SELECT ReferenceId 
    , (SELECT 'ToAddress'  AS "Tag/Name" 
       , ToAddress  AS "Tag/Value" 
       , null   AS "separator" 
       , 'CCAddress' AS "Tag/Name" 
       , CCAddress  AS "Tag/Value" 
       , null   AS "separator" 
       , 'FromAddress' AS "Tag/Name" 
       , FromAddress AS "Tag/Value" 
     FROM EmailTable AS ET 
     WHERE ET.ReferenceId = RT.ReferenceId 
     FOR XML PATH('Tags'),TYPE 
     ) 
    , 'asASas' AS SomethingElse 

FROM RefTable AS RT 
FOR XML PATH('EmailToBeSent'), ROOT('EmailsToBeSent') 
+0

いつもお気軽にご連絡ください – JamieD77

+0

恐ろしく、うまくいきました!ありがとう! –

関連する問題