2016-08-01 5 views
2

적절한 전자 메일을 수집하는 데 필요한 모든 내용의 대량 전자 메일 응용 프로그램 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 테이블과 예제 데이터가 포함 된 삽입 문을 작성하십시오. – 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

굉장하고, 효과가있는 것 같습니다! 감사! –