Ausgabe mit xml-Parsing-data in SQL-Abfrage

Ich arbeite an SQL-Abfrage wo ich brauche, um zu mischen xml zu sql .Query arbeitet für andere xml aber nicht für unter xml arbeiten. Abfrage, die ich benutze, ist wie unten

DECLARE @xmldata XML SET @xmldata = N'<SearchProductsResponse xmlns="http://api.abc.com/"> <productItems> <productItem id="5d0ee86d84bcc5edef43236d61419a59"> <trackingLinks> <trackingLink adspaceId="100"> <ppv> abc.com </ppv> <ppc> abc.com </ppc> </trackingLink> </trackingLinks> </productItem> </productItems> </SearchProductsResponse>'; select t1.c.value('@id', 'varchar(300)') as itemid, ccvalue('@id', 'int') as adspaceId from @xmldata.nodes('*:SearchProductsResponse/*:productItems/*:productItem') as t1(c) OUTER APPLY t1.c.nodes('*:trackingLinks/*:trackingLink') as c(c) 

Ausgabe, die ich bekomme, ist

 itemid adspaceId 5d0ee86d84bcc5edef43236d61419a59 NULL 

Aber ich sollte 100 instead of NULL . Diese Abfrage funktioniert für andere XML, aber weiß nicht, was mit diesem XML falsch ist. Ich habe doppelte Überprüfung XML und Abfrage nichts anderes als andere XML. Hoffe, ich vermisse keinen dummen Fehler

Ändern Sie die Attributauswahl für Ihre adspaceId-Spalte zu @adspaceId .

 select t1.c.value('@id', 'varchar(300)') as itemid, ccvalue('@adspaceId', 'int') as adspaceId from @xmldata.nodes('*:SearchProductsResponse/*:productItems/*:productItem') as t1(c) OUTER APPLY t1.c.nodes('*:trackingLinks/*:trackingLink') as c(c)