2012-04-14 7 views
-2
<abc id="abc1"> 
    <def id="def1"> 
    <ghi att='ghi1'> 
     <mn id="0742d2ea" name="RF" dt="0" df="3" ty="0" /> 
     <mn id="64d9a11b" name="CJ" dt="0" df="3" ty="0" /> 
     <mn id="db72d154" name="FJ" dt="2" df="4" ty="0" /> 
     <mn id="39af9fa1" name="BS" dt="0" df="2" ty="0" /> 
    </ghi> 
    <jkl att='jkl1'> 
     <mn id="0742d2ea" name="RF" dt="1" gl="19" /> 
     <mn id="64d9a11b" name="CJ" dt="0" gl="6" /> 
     <mn id="db72d154" name="FJ" dt="0" gl="0" /> 
     <mn id="39af9fa1" name="BS" dt="0" gl="12" /> 
     <mn id="ac4f566f" name="DJ" dt="0" gl="9" /> 
     <mn id="4bf3ba2f" name="RP" dt="0" gl="16" /> 
     <mn id="db1af021" name="SC" dt="1" gl="10" /> 
     <mn id="c4c93a2d" name="DN" dt="1" gl="15" /> 
    </jkl> 
    </def> 
</abc> 

Ich brauche diesen Ausgang. Ist das in SQL Server 2008 möglich?SQL Server 2008 muss genau wie Kreuztabellenabfrage auf XML-Spalte?

id   name ghiDT ghiDF ghiTY jklDT jklGL 
0742d2ea RF 0 3 0 1 19 
64d9a11b CJ 0 3 0 0 6 
db72d154 FJ 2 4 0 0 0 
39af9fa1 BS 0 2 0 0 12 
ac4f566f DJ 0 0 0 0 9 
4bf3ba2f RP 0 0 0 0 16 
db1af021 SC 0 0 0 1 10 
c4c93a2d DN 0 0 0 1 15 
+1

kein Versuch gezeigt ... –

+0

ist das möglich? – user1332896

+1

** JA! ** es ist definitiv möglich - lesen [Einführung in XQuery in SQL Server] (http://msdn.microsoft.com/en-us/library/ms345122%28v=sql.90%29.aspx), probiere etwas selbst aus, und wenn du nicht weiterkommst, komm zurück und frage genauer –

Antwort

0

Nicht wirklich verstehen, wo die Kreuz Registerkarte anwendbar ist. Sie müssen die Knoten in jeder Gruppe einzeln abfragen, indem Sie nodes() verwenden, um das XML zu zerlegen. Dann können Sie eine full outer join auf id tun und coalesce verwenden, um sicherzustellen, dass Sie den ersten nicht null Wert für id und name Spalten erhalten. Sie sollten auch coalesce verwenden, um eine 0 anstelle von null für Ihre anderen Spalten zu erhalten.

SE-Data