나는 다음과 같은 형식의 XML 파일을 생성 할 속성.여러 XML은
<ProData>
<DataSet Name="ABCD">
<Data DataElement="AAA" Value="10"/>
<Data DataElement="BBB" Value="20"/>
</DataSet>
<DataSet Name="EFGH">
<Data DataElement="CCC" Value="Phoebe"/>
<Data DataElement="DDD" Value="Buffay"/>
</DataSet>
</ProData>
<ProData>
<DataSet Name="ABCD">
<Data DataElement="AAA" Value="30"/>
<Data DataElement="BBB" Value="40"/>
</DataSet>
<DataSet Name="EFGH">
<Data DataElement="CCC" Value="Ross"/>
<Data DataElement="DDD" Value="Geller"/>
</DataSet>
</ProData>
로 인해, 내 XML
파일을 검색하는 FOR XML PATH
쿼리를 사용하고 있지만 여러 중첩 된 요소를 검색에 성공할 수 없다 : 내 표는이
CREATE TABLE MyTable(
[CustomerNumber] [nvarchar](6) NOT NULL,
[AAA_Value] Int NOT NULL,
[BBB_Value] Int NOT NULL,
[Name] [nvarchar](10) NOT NULL,
[Surname] [nvarchar](10) NOT NULL
)
INSERT [dbo].[MyTable] ([CustomerNumber], [AAA_Value], [BBB_Value], [Name], [Surname]) VALUES (N'123456', 10, 20, N'Phoebe', N'Buffay')
INSERT [dbo].[MyTable] ([CustomerNumber], [AAA_Value], [BBB_Value], [Name], [Surname]) VALUES (N'234567', 30, 40, N'Ross', N'Geller')
그래서 원하는 출력해야한다입니다 다음과 같은 오류 :
The same attribute cannot be generated more than once on the same XML tag.
내 쿼리는 다음과 같습니다
,536,913 63,210(SELECT
blah,
'AAA' as 'Common/Data/ProData/DataSet/Data/@DataElement',
AAA_Value AS 'Common/ApplicationData/ProData/DataSet/Data/@Value' ,
'BBB' as 'Common/Data/ProData/DataSet/Data/@DataElement' ,
BBB_Value as 'Common/Data/ProData/DataSet/Data/@Value',
blah
FROM MyTable
FOR XML PATH('Notification'),ROOT('NotificationsList'),
TYPE)
FOR XML PATH ('NotificationFile')
는이 같은 중첩 된 쿼리 결과 집합을 "강제"에 의해 원하는 결과를 얻을 수 있었다있다 :이 그것을 할 수있는 끔찍한 방법입니다 확신
(SELECT blah,
(SELECT
(SELECT
(SELECT 'AAA' AS 'Data/@DataElement' ,
AAA_Value AS 'Data/@Value'
FROM MyTable WHERE CONDITION
FOR xml path(''), TYPE),
(SELECT 'BBB' AS 'Data/@DataElement' ,
BBB_Value AS 'Data/@Value'
FROM MyTable WHERE CONDITION
FOR xml path(''), TYPE),
FOR xml path('DataSet'), TYPE)
FOR xml path('ProData'), TYPE) ,
blah
FROM MyTable
FOR XML PATH('Notification'),ROOT('NotificationsList'),
TYPE )
FOR XML PATH ('NotificationFile')
,하지만 난 할 수 그것을위한 더 좋은 방법을 관리하는 것 같지 않습니다. 누군가 나를 도울 수 있습니까? 당신이 당신의 요구를 clearified 한 후
내가 당신이 원하는 무엇을이를 생각, 당신에게
우리가 돕기 위해 사용할 수있는 예제 데이터를 우리에게 제공하는 것은 어떻습니까? – Matt
테이블의 레이아웃을 제공했습니다. 고맙습니다! – NotApplicable
안녕하세요, 아니요, 테이블의 레이아웃을 제공하지 않았습니다. 몇 가지 열 이름 ...이 데이터에 맞는 예상 출력과 함께 실제 테이블 정의 (유형 포함)와 샘플 데이터 행을 제공하십시오 ... – Shnugo