У меня есть такая процедура:
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
, я получаю соответствующую структуру. Но мне нужен этот подзапрос. Есть ли способ достичь этой структуры?