¿Cómo consultar valores desde nodos xml?

tengo una tabla que contiene una columna XML:

CREATE TABLE Batches( BatchID int, RawXml xml ) 

El xml contiene elementos tales como:

    1 4     2 4     3 4     4 4   

Lo que quiero es generar un conjunto que contenga:

 OrganizationReportReferenceNumber OrganizationNumber ================================= ================== 1 4 2 4 3 4 4 4 

He intentado:

 SELECT foo.value('/ReportHeader/OrganizationReportReferenceIdentifier') AS ReportIdentifierNumber, foo.value('/ReportHeader/OrganizationNumber') AS OrginazationNumber FROM CDRBatches.RawXML.query('/GrobReportXmlFileXmlFile/GrobReport/ReportHeader') foo 

pero eso no funciona. He intentado:

 SELECT foo.value('/ReportHeader/OrganizationReportReferenceIdentifier') AS ReportIdentifierNumber, foo.value('/ReportHeader/OrganizationNumber') AS OrginazationNumber FROM RawXML.nodes('/GrobReportXmlFileXmlFile/GrobReport/ReportHeader') bar(foo) 

Pero eso no funciona. La expresión XPath

 /GrobReportXmlFileXmlFile/GrobReport/ReportHeader 

es correcto; en cualquier otro sistema xml devuelve:

  1 4   2 4   3 4   4 4  

Por lo tanto, es obvio por mis consultas que me gustaría ver. Después de leer una docena de preguntas y respuestas de Stackover, no estoy más cerca de resolver el problema.

 SELECT b.BatchID, x.XmlCol.value('(ReportHeader/OrganizationReportReferenceIdentifier)[1]','VARCHAR(100)') AS OrganizationReportReferenceIdentifier, x.XmlCol.value('(ReportHeader/OrganizationNumber)[1]','VARCHAR(100)') AS OrganizationNumber FROM Batches b CROSS APPLY b.RawXml.nodes('/CasinoDisbursementReportXmlFile/CasinoDisbursementReport') x(XmlCol); 

Demostración: SQLFiddle

Prueba esto:

 SELECT RawXML.value('(/GrobXmlFile//Grob//ReportHeader//OrganizationReportReferenceIdentifier/node())[1]','varchar(50)') AS ReportIdentifierNumber, RawXML.value('(/GrobXmlFile//Grob//ReportHeader//OrganizationNumber/node())[1]','int') AS OrginazationNumber FROM Batches 

Esto funciona, ha sido probado …

 SELECT ncvalue('OrganizationReportReferenceIdentifier[1]','varchar(128)') AS 'OrganizationReportReferenceNumber', ncvalue('(OrganizationNumber)[1]','varchar(128)') AS 'OrganizationNumber' FROM Batches t Cross Apply RawXML.nodes('/GrobXmlFile/Grob/ReportHeader') n(c)