2011-04-04 55 views
0

我試圖解決以下問題,這會導致表示數據庫中計算的對象的序列化。 我試圖爲報告目的執行查詢,並且需要在XML層次結構的不同部分(這些來自對象的string[]double[]屬性的序列化)中的相同位置中找到節點。 比如我有類似Sql Server 2005中的XQuery - 在同一位置查找節點

...<parent> 
     <Names> 
     <string>Name1</string> 
     <string>Name2</string> 
     <string>Name3</string> 
     </Names> 

and 

...<parent> 
     <Weights> 
     <double>0.5</double> 
     <double>0.13</double> 
     <double>0.2</double> 
     </Weights> 

我希望能夠查詢XML blob和拉出每個XML二進制大對象名稱,重量對,這樣我可以在SQL查詢,而不是要反序列化對象。我可以將名稱拉出來,我可以拉出重量,但如果將它們合併,它會以交叉查詢的形式出現,因爲我正在努力將它們匹配起來。我認爲答案可能是創建兩個視圖,一個用於名稱,另一個用於權重,然後將它們連接到位置,但查詢中不允許使用position(),除非類似[position() < 6]

回答

0

通過創建2個單獨的視圖然後聚合視圖解決了這個問題。我用

ROW_NUMBER() OVER(PARTITION BY Id ORDER BY Id) as ItemPosition 

作爲每個查詢/視圖中的一列。然後我加入了Id和ItemPosition。不知道這是否是最好的方法,但至少它是匹配相關項目。