Hi everyone, I'm trying to execute a XQuery sum function in a multiplication of two XML elements, but it has been difficult to avoid the iteration in a sequence of elements. For example, considering this case:
sample data: <Orders> <Order> <OrderKey>1</OrderKey> <LineItem> <LineNumber>1</LineNumber> <ExtendedPrice>70848.0000</ExtendedPrice> <Discount>0.0913</Discount> <ReturnFlag>A</ReturnFlag> <LineStatus>F</LineStatus> <ShipDate>1994-09-03</ShipDate> </LineItem> <LineItem> <LineNumber>2</LineNumber> <ExtendedPrice>64372.0000</ExtendedPrice> <Discount>0.0674</Discount> <ReturnFlag>A</ReturnFlag> <LineStatus>F</LineStatus> <ShipDate>1994-08-18</ShipDate> </LineItem> <LineItem> <LineNumber>3</LineNumber> <ExtendedPrice>64247.0000</ExtendedPrice> <Discount>0.0396</Discount> <ReturnFlag>R</ReturnFlag> <LineStatus>F</LineStatus> <ShipDate>1994-10-21</ShipDate> </LineItem> </Order> . . . </Orders>
XQuery: <results> { for $lineitem in collection("tpch")/Orders/Order/LineItem let $returnflag := $lineitem/ReturnFlag let $linestatus := $lineitem/LineStatus where $lineitem/ShipDate <= "1998-08-31" group by $returnflag, $linestatus order by $returnflag, $linestatus return <record> <sum_disc_price>{sum($lineitem/ExtendedPrice*(1-$lineitem/Discount))}</sum_disc_price> </record> } </results>
BaseX output: [XPTY0004] Item expected, sequence found: (element ExtendedPrice {...}, ......
My question: Considering this dataset model, how can I to write this query without change its semantics?
I wouldn't want to use extra functions (e.g., fn:for-each), because I need to submit the same query in an limited xquery processor.
Thanks in advance!