2010-11-12 30 views
0

我使用總和計算持續時間的問題。Xquery總結了部分DayTime持續時間

這裏有一個例子:

<total> 
for $t in //Times 
let $start_t := $t/@start 
let $stop_t := $t/@stop 
let $duration := xs:dateTime($stop_t) - xs:dateTime($start_t) 
return 
..... 
</total> 

給了我部分持續時間的列表。我如何總結他們使用總和?

感謝

+0

你必須'接受其中一個答案 - 這個並且提升,你仍然缺乏代表所做的是被接受和鼓勵的實踐,以表達對SO的感謝。 – 2010-11-14 17:32:37

回答

0

你可以只包住整個查詢在呼叫總結():

<total> 
{ 
    sum(
    for $t in //Times 
    let $start_t := $t/@start 
    let $stop_t := $t/@stop 
    return xs:dateTime($stop_t) - xs:dateTime($start_t) 
) 
} 
</total> 
+0

非常感謝:)。它有訣竅。 – qba 2010-11-12 13:09:43

+0

@ Oliver-Hallam:爲什麼OP應該使用你的答案而不是@Alejandro的?請給出意見。 – 2010-11-14 17:33:52

+0

@Dimitre:我的回答是說明了解決問題的OP代碼所需的最小改變。通過將FLWOR重寫爲路徑表達式,@Alejandro進一步改進了這一點。我相信我的答案仍然有價值,因爲用路徑語法重寫可能會讓新手XQuery用戶感到困惑。我也提高了Alejandros的回答,因爲它是一個更好的解決方案。 – 2010-11-22 18:18:26

3

您可以使用此的XQuery/XPath表達式:

sum(//Times/(xs:dateTime(@stop) - xs:dateTime(@start))) 
+0

有沒有什麼辦法可以將結果作爲變量返回,而不是比如。顯示FN:從持續時間,分鐘,月份的日子...不重複每個人的查詢? – qba 2010-11-12 15:09:45

+0

好的。讓它正常工作。感謝您的幫助 – qba 2010-11-12 15:13:01

+0

@qba:當然。你可以使用[變量聲明](http://www.w3.org/TR/xquery/#id-variable-declarations):''declare「」variable「」$「QName TypeDeclaration? ((「:=」ExprSingle)|「external」)' – 2010-11-12 15:16:11

相關問題