sql server xml example
select createdTime,serialNumber,processDefinitionId,processInstanceName,currentState,
CAST(fieldValues AS xml ).value('(/TYHR008/txt0101)[1]', 'varchar(20)') AS txt0101,
CAST(fieldValues AS xml ).value('(/TYHR008/dlb0102)[1]', 'varchar(20)') AS dlb0102,
--T2.grid.query('.'),
T2.grid.query('.').value('(/record/item)[1]','varchar(20)') as item1,
T2.grid.query('.').value('(/record/item)[2]','varchar(20)') as item2,
T2.grid.query('.').value('(/record/item)[3]','varchar(20)') as item3,
T2.grid.query('.').value('(/record/item)[4]','varchar(20)') as item4,
T2.grid.query('.').value('(/record/item)[5]','varchar(20)') as item5,
T2.grid.query('.').value('(/record/item)[6]','varchar(20)') as item6,
T2.grid.query('.').value('(/record/item)[7]','varchar(20)') as item7,
T2.grid.query('.').value('(/record/item)[8]','varchar(20)') as item8,
T2.grid.query('.').value('(/record/item)[9]','varchar(20)') as item9,
T2.grid.query('.').value('(/record/item)[10]','varchar(20)') as item10,
T2.grid.query('.').value('(/record/item)[11]','varchar(20)') as item11,
T2.grid.query('.').value('(/record/item)[12]','varchar(20)') as item12,
T2.grid.query('.').value('(/record/item)[13]','varchar(20)') as item13
from
(SELECT top 40 p.createdTime, f.serialNumber,f.fieldValues,CAST(f.fieldValues AS xml ).value('(/TYHR008/grd0501)[1]', 'varchar(20)') AS grd0501,
CAST(f.fieldValues AS xml ).query('/TYHR008/grd0501') as grid,
p.processDefinitionId, p.processInstanceName,p.currentState
FROM dbo.FormInstance AS f INNER JOIN
dbo.LocalRelevantData AS l ON f.OID = l.valueOID INNER JOIN
dbo.ProcessInstance AS p ON l.containerOID = p.contextOID
WHERE (p.processDefinitionId = 'TYHR008') and p.createdTime >=getdate()-30) T
CROSS APPLY grid.nodes('/grd0501/records/record') AS T2(grid)
order by serialNumber