我不知道如何执行这个查询:
使用 XQuery,对于每个代表编号,输出:
A. firstname,代表的姓氏。
B.与代表关联的每个客户的客户名称。
C.与代表相关的所有客户的总金额(不含税) 。
首映数据库架构:
-A Customer结构具有属性 CustomerNumber、RepNum(分配的代表)等。
- 一个Rep结构具有RepNum等属性。
-Orders结构具有 CustomerNumber、 OrderNum等属性。
-OrderLine结构具有OrderNum、NumOrdered、QuotedPrice(per -item) 等属性。
*多个订单行可以有相同的订单号。
示例所需的输出:
Q4 输出:
<results>
<rep repnum="20" firstname="Valerie" lastname="Kaiser">
<customer name="Al's Appliance and Sport"/>
<customer name="Kline's"/>
<customer name="All Season"/>
<Revenue total="$736.45"/>
</rep>
<rep repnum="35" firstname="Richard" lastname="Hull">
<customer name="Brookings Direct"/>
<customer name="The Everything Shop"/>
<customer name="Lee's Sport and Appliance"/>
<customer name="Deerfield's Four Seasons"/>
<Revenue total="$2,509.80"/>
</rep>
<rep repnum="65" firstname="Juan" lastname="Perez">
<customer name="Ferguson's"/>
<customer name="Bargains Galore"/>
<customer name="Johnson's Department Store"/>
<Revenue total="$5,664.89"/>
</rep>
</results>
我得到的输出:
<results>
<rep>
<rep repnum="20" firstname="Valerie" lastname="Kaiser"/>
<customer name="Al's Appliance and Sport"/>
<customer name="Kline's"/>
<customer name="All Season"/>
<Revenue total="0"/>
</rep>
<rep>
<rep repnum="35" firstname="Richard" lastname="Hull"/>
<customer name="Brookings Direct"/>
<customer name="The Everything Shop"/>
<customer name="Lee's Sport and Appliance"/>
<customer name="Deerfield's Four Seasons"/>
<Revenue total="0"/>
</rep>
<rep>
<rep repnum="65" firstname="Juan" lastname="Perez"/>
<customer name="Ferguson's"/>
<customer name="Bargains Galore"/>
<customer name="Johnson's Department Store"/>
<Revenue total="0"/>
</rep>
</results>
每个代表的收入为 0!
我的代码:
<results>
{
for $r in doc("../premiere/Rep.xml")//Rep
let $c := doc("../premiere/Customer.xml")//Customer[RepNum = $r/RepNum]
return
<rep>
<rep repnum = "{$r/RepNum}" firstname="{$r/FirstName}" lastname="{$r/LastName}"/>
{for $customer in $c
return
<customer name= "{ $customer/CustomerName}"/>}
<Revenue total= "{sum(
for $customer in $c
let $o := doc("../premiere/Orders.xml")//Orders[CustomerNumber = $customer/CustomerNumber]
let $customerAmount := sum(
for $order in $o
let $l := doc("../premiere/OrderLine.xml")//OrderLine[OrderNum = $order/OrderNum]
let $orderAmount := format-number(sum(
for $lineItem in $l
let $LineAmount := (data($lineItem/NumOrdered) * data($lineItem/QuotedPrice))
return
$LineAmount
), '$,000.00')
return
$orderAmount
)
return
$customerAmount
)}"
/>
</rep>
}
</results>
提前致谢!