2012-03-12 11 views
0

2年以上にわたる売上を計上するためのXQueryを取得するのに問題がありますが、それはSQLクエリに基づいています。SQLクエリを、年間売上高をカウントするXQueryに変換します。

SELECT [ShipCountry] & " " & [ShipCity] AS CountryAndCity, COUNT(OrderID) AS BiYearlySales 
FROM Orders 
WHERE (((OrderDate) BETWEEN #1/1/1996# And #1/1/1998#)) 
GROUP BY [ShipCountry] & " " & [ShipCity]; 

これは私が今までに持っているxqueryですが、各インスタンスは1回だけカウントされます。なぜか解りません。 私はAltova xmlspy - xquery 1.0を使っています。

<Result> 
{ 
for $a in doc("Orders.xml")/dataroot/Orders 
let $b := concat($a/ShipCountry, " ", $a/ShipCity) 
where $a/OrderDate >= '1996-01-01T00:00:00' and $a/OrderDate <= '1998-01-01T00:00:00' 
return 
<BiYearlySales> 
    <CountryNameAndCity>{$b}</CountryNameAndCity> 
    <OrderCount>{count($a)}</OrderCount> 
</BiYearlySales> 
} 
</Result> 

私はまだグループをやっていないことを実感していますが、この作業をより重要なものにしようとしています。

+0

FYI、私たちはまったく同じ宿題で助けを求める二つの他の人を持っています。 xqueryとタグ付けされた他の最近の質問を見ると役に立ちます。 –

答えて

0

ない、これは正確に...右の(それを試していない)が、このようなものであることを確認してください:

for $country in doc("Orders.xml")/dataroot/Orders[OrderDate ge '1996-01-01T00:00:00' and OrderDate le '1998-01-01T00:00:00']/ShipCountry, $city in doc(doc("Orders.xml")/dataroot/Orders[OrderDate ge '1996-01-01T00:00:00' and OrderDate le '1998-01-01T00:00:00']/ShipCity") 
return 
<sales> 
    <geo>{$country, " ", $city)}</geo> 
    <count>{count(doc("Orders.xml")/dataroot/Orders 
      [OrderDate ge '1996-01-01T00:00:00' and OrderDate le '1998-01-01T00:00:00' 
      and ShipCountry eq $country and ShipCity eq $city])} 
    </count> 
</sales> 
関連する問題