|
Hi Pragya,
As per your requirement , you have to use if/else condition. Follow the below sample algo:
for $each in $results//results/result (: $results//results/result
==> used // äs you mentioned AgreementType can be at any level or not :)
return
if($each/AgreementType) then
if($sortDirection=""asc"") then
order by $each/AgreementType ascending
else order by $each/AgreementType descending
else $results
Now you can write own logic based on business conditions.
Regards,
Asit Nautiyal
From: [email protected] [[email protected]] on behalf of Kapoor, Pragya [[email protected]]
Sent: Tuesday, May 05, 2015 9:34 AM To: MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] Dynamic order by Could someone help on this? From: Kapoor, Pragya
Sent: Monday, May 4, 2015 5:03 PM To: MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] Dynamic order by Thanks Asit. But I have different requirement. In your code :
return if($sorting/sorting/sort) then
for $each in $results//results/result
order by $each/AgreementType descending , $each/CollectionNo ascending
return $each (: modify as per your business requirement :)
else $results
In the order by clause you are using $each/AgreementType, but as mentioned in the mail the element AgreementType is not static. This value is dynamic moreover sort direction(asc/desc) is also dynamic.
Thanks
Pragya
From: [email protected] <[email protected]> on behalf of Asitmohan Nautiyal <[email protected]>
Sent: Monday, May 4, 2015 4:40 PM To: MarkLogic Developer Discussion Subject: Re: [MarkLogic Dev General] Dynamic order by Hi Pragya,
try below sample code
let $sorting :=<a> <sorting>
<columnAlias>Currency</columnAlias>
</sorting>
<sorting>
<sort>desc</sort>
<columnAlias>AgreementType</columnAlias>
</sorting>
<sorting>
<sort>asc</sort>
<columnAlias>CollectionNo</columnAlias>
</sorting></a>
let $results :=
<report>
<columns>
<title>Currency</title>
<title>AgreementType</title>
<title>CollectionNo</title>
</columns>
<results>
<result>
<Currency>US dollar</Currency>
<AgreementType>abc</AgreementType>
<CollectionNo>0000050</CollectionNo>
</result>
<result>
<Currency>Pound sterling</Currency>
<AgreementType>xyz</AgreementType>
<CollectionNo>0000048</CollectionNo>
</result>
<result>
<Currency>Euro</Currency>
<AgreementType>ebf</AgreementType>
<CollectionNo>0000049</CollectionNo>
</result>
</results>
</report>
return if($sorting/sorting/sort) then
for $each in $results//results/result
order by $each/AgreementType descending , $each/CollectionNo ascending
return $each (: modify as per your business requirement :)
else $results
Regards,
Asit Nautiyal
From: [email protected] [[email protected]] on behalf of Kapoor, Pragya [[email protected]]
Sent: Monday, May 04, 2015 3:21 PM To: MarkLogic Developer Discussion Subject: [MarkLogic Dev General] Dynamic order by Hi,
I need to sort the $results based on element columnAlias in $sorting.
for eg :
In the below scenario, I want to first sort the $results with AgreementType(desc) and then with CollectionNo(asc).If there is not <sort> element in $sorting/sorting then do not use that element <columnAlias> for sorting.
Moreover the elements in $sorting & $results will be dynamic and not fixed.
let $sorting :=<a> <sorting>
<columnAlias>Currency</columnAlias>
</sorting>
<sorting>
<sort>desc</sort>
<columnAlias>AgreementType</columnAlias>
</sorting>
<sorting>
<sort>asc</sort>
<columnAlias>CollectionNo</columnAlias>
</sorting></a>
let $results :=
<report>
<columns>
<title>Currency</title>
<title>AgreementType</title>
<title>CollectionNo</title>
</columns>
<results>
<result>
<Currency>US dollar</Currency>
<AgreementType>abc</AgreementType>
<CollectionNo>0000050</CollectionNo>
</result>
<result>
<Currency>Pound sterling</Currency>
<AgreementType>xyz</AgreementType>
<CollectionNo>0000048</CollectionNo>
</result>
<result>
<Currency>Euro</Currency>
<AgreementType>ebf</AgreementType>
<CollectionNo>0000049</CollectionNo>
</result>
</results>
</report>
Thanks
Pragya
The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only. ---------------------------------------------------------------------------------------------------------------------------------------------------- |
_______________________________________________ General mailing list [email protected] Manage your subscription at: http://developer.marklogic.com/mailman/listinfo/general
