Given table T with columns:
ID UNIQUEIDENTIFIER
CreatedDate DATETIME
XmlData XML
Where XmlData is structured like:
<application>
<details firstname="first" lastname="last">
<statement>statement</statement>
</details>
<educationHistory>
<education subject="subject1" />
<education subject="subject2" />
</educationHistory>
<experienceHistory>
<examiningExperienceHistory>
<examiningExperience module="module1" />
<examiningExperience module="module2" />
</examiningExperienceHistory>
<teachingExperienceHistory>
<teachingExperience module="module1" />
<teachingExperience module="module2" />
</teachingExperienceHistory>
</experienceHistory>
</application>
I need to return an extract like so:
ID Date FirstName LastName Education ExaminingExp TeachingExp
-----------------------------------------------------------------------
1 02-10-2012 First Last <xmlextract> <xmlextract> <xmlextract>
So far I have:
SELECT ID,
CreatedDate [Date],
XmlData.value('(application/details/@firstname)[1]','varchar(max)') [FirstName],
XmlData.value('(application/details/@lastname)[1]','varchar(max)') [LastName]
FROM T
I'm struggling with thee last three columns. For each record, I need to list teaching/examining experience, and education. Can anybody help?
Use .query
to extract xml.
eg
select
XmlData.query('/application/educationHistory/*'),
XmlData.query('/application/experienceHistory/examiningExperienceHistory/*'),
XmlData.query('/application/experienceHistory/teachingExperienceHistory/*')