2012-02-03 33 views
2

我已存儲的過程是這樣的:沒有得到適當的結構

CREATE PROCEDURE [dbo].[Poll_EDI834_5010] 
AS 
BEGIN 
SELECT  Header.ST01, 
      Line.PER04__CommunicationNumber , 
      (SELECT Member_Ref.REF01_ReferenceIdentificationQualifier 
      FROM EDI834_5010_2000_RefLoop Member_Ref 
      WHERE Member_Ref.Id_Header = Header.BGN02__TransactionSetIdentifierCode    
      AND  Member_Ref.Id_Loop2000 = Line.Member_Id 
      FOR XML AUTO, ELEMENTS, TYPE),  
      VLine.HD01_MaintenanceTypeCode,  
      (SELECT ClaimDTP.DTP01__DateTimeQualifier 
      FROM EDI834_5010_2300_DTPLoop ClaimDTP  
      WHERE ClaimDTP.Id_Header = Header.BGN02__TransactionSetIdentifierCode  
      AND  ClaimDTP.Id_Loop2000 = Line.Member_Id  
      AND  ClaimDTP.Id_Loop2300 = VLine.Id_Claim  
      FOR XML AUTO, ELEMENTS, TYPE) 
FROM  EDI834_5010_Header Header 
JOIN  EDI834_5010_2000  Line ON Header.BGN02__TransactionSetIdentifierCode = Line.Header_Id 
JOIN  EDI834_5010_2300Loop VLine ON Header.BGN02__TransactionSetIdentifierCode = VLine.Id_Header_Id andVLine.Id_Loop2000=Line.Member_Id 
FOR XML AUTO, ELEMENTS 
END 
GO 

我得到的數據結構是這樣的:

<Header> 
    <Line> 
     <MemberRef> </MemberRef> 
     <MemberRef> </MemberRef> 
     <VLine> 
      <Claim_DTP> </Claim_DTP> 
      <Claim_DTP> </Claim_DTP> 
     </VLine> 
    </Line> 
</Header> 

我的問題是我想要的數據看起來像這個:

<Header> 
    <Line> 
     <MemberRef> </MemberRef> 
     <MemberRef> </MemberRef> 
     <VLine> 
     <Claim_DTP> </Claim_DTP> 
     <Claim_DTP> </Claim_DTP> 
     </VLine> 
     <VLine> 
     <Claim_DTP> </Claim_DTP> 
     <Claim_DTP> </Claim_DTP> 
     </VLine> 
    </Line> 
</Header> 

爲什麼我的VLine節點不重複?但是,當我刪除子查詢Member_Ref我得到適當的結構。但是我需要這個子查詢。有什麼辦法可以達到這個結構嗎?

+1

那些是非常討厭的字段名。 – JohnB 2012-02-03 06:01:37

回答

2
 CREATE PROCEDURE [dbo].[Poll_EDI834_5010] 
AS 
BEGIN 
     SELECT  Header.ST01,    
     Line.PER04__CommunicationNumber ,    
     (SELECT Member_Ref.REF01_ReferenceIdentificationQualifier    
     FROM EDI834_5010_2000_RefLoop Member_Ref    
     WHERE Member_Ref.Id_Header = Header.BGN02__TransactionSetIdentifierCode       
     AND  Member_Ref.Id_Loop2000 = Line.Member_Id    
     FOR XML AUTO, ELEMENTS, TYPE),     
     (SELECT VLine.HD01_MaintenanceTypeCode,     
     (SELECT ClaimDTP.DTP01__DateTimeQualifier     
      FROM EDI834_5010_2300_DTPLoop ClaimDTP      
      WHERE ClaimDTP.Id_Header = Header.BGN02__TransactionSetIdentifierCode      
      AND  ClaimDTP.Id_Loop2000 = Line.Member_Id     
      AND  ClaimDTP.Id_Loop2300 = VLine.Id_Claim     
      FOR XML AUTO, ELEMENTS, TYPE) 
      FROM EDI834_5010_2300Loop VLine 
      Where Header.BGN02__TransactionSetIdentifierCode = VLine.Id_Header_Id andVLine.Id_Loop2000=Line.Member_Id 

      FOR XML AUTO, ELEMENTS, TYPE) 
FROM  EDI834_5010_Header Header 
JOIN  EDI834_5010_2000  Line ON Header.BGN02__TransactionSetIdentifierCode = Line.Header_Id 
    FOR XML AUTO, ELEMENTS 
END 
GO 
1

不知道這...

CREATE PROCEDURE [dbo].[Poll_EDI834_5010] 
AS 
BEGIN 
SELECT  Header.ST01, 
      Line.PER04__CommunicationNumber , 
      (SELECT Member_Ref.REF01_ReferenceIdentificationQualifier 
      FROM EDI834_5010_2000_RefLoop Member_Ref 
      WHERE Member_Ref.Id_Header = Header.BGN02__TransactionSetIdentifierCode    
      AND  Member_Ref.Id_Loop2000 = Line.Member_Id 
      FOR XML AUTO, ELEMENTS, TYPE),  
      (SELECT VLine.HD01_MaintenanceTypeCode, 
       (SELECT ClaimDTP.DTP01__DateTimeQualifier 
       FROM EDI834_5010_2300_DTPLoop ClaimDTP  
       WHERE ClaimDTP.Id_Header = Header.BGN02__TransactionSetIdentifierCode  
       AND  ClaimDTP.Id_Loop2000 = Line.Member_Id 
       AND  ClaimDTP.Id_Loop2300 = VLine.Id_Claim 
       FOR XML AUTO, ELEMENTS, TYPE) 
      FOR XML AUTO, ELEMENTS, TYPE) 
FROM  EDI834_5010_Header Header 
JOIN  EDI834_5010_2000  Line ON Header.BGN02__TransactionSetIdentifierCode = Line.Header_Id 
JOIN  EDI834_5010_2300Loop VLine ON Header.BGN02__TransactionSetIdentifierCode = VLine.Id_Header_Id andVLine.Id_Loop2000=Line.Member_Id 
FOR XML AUTO, ELEMENTS 
END 
GO 
+0

確切的解決方案有什麼不同?我可以編輯我的答案,以便其他人可以從您的問題中學習。 *(對不起,我沒有你的數據庫,所以我不能測試自己)* – JohnB 2012-02-03 17:38:36

+0

它幾乎相同唯一的差異是我不得不添加上述解決方案中給出的3行...非常感謝。爲了幫助約翰 – 2012-02-03 20:55:30