I've solved this by using xdmp:eval and building the xquery order string 
through a function.

Do you need an example ?


------------------------------

Message: 4
Date: Tue, 5 May 2015 04:04:45 +0000
From: "Kapoor, Pragya" <pkapo...@innodata.com>
Subject: Re: [MarkLogic Dev General] Dynamic order by
To: MarkLogic Developer Discussion <general@developer.marklogic.com>
Message-ID: <1430798685003.81...@innodata.com>
Content-Type: text/plain; charset="utf-8"

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: general-boun...@developer.marklogic.com 
<general-boun...@developer.marklogic.com> on behalf of Asitmohan Nautiyal 
<asitmoha...@hcl.com>
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: general-boun...@developer.marklogic.com 
[general-boun...@developer.marklogic.com] on behalf of Kapoor, Pragya 
[pkapo...@innodata.com]
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

?


"This e-mail and any attachments transmitted with it are for the sole use of 
the intended recipient(s) and may contain confidential , proprietary or 
privileged information. If you are not the intended recipient, please contact 
the sender by reply e-mail and destroy all copies of the original message. Any 
unauthorized review, use, disclosure, dissemination, forwarding, printing or 
copying of this e-mail or any action taken in reliance on this e-mail is 
strictly prohibited and may be unlawful."


::DISCLAIMER::
----------------------------------------------------------------------------------------------------------------------------------------------------
The contents of this e-mail and any attachment(s) are confidential and intended 
for the named recipient(s) only.
E-mail transmission is not guaranteed to be secure or error-free as information 
could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or 
may contain viruses in transmission. The e mail and its contents (with or 
without referred errors) shall therefore not attach any liability on the 
originator or HCL or its affiliates.
Views or opinions, if any, presented in this email are solely those of the 
author and may not necessarily reflect the views or opinions of HCL or its 
affiliates. Any form of reproduction, dissemination, copying, disclosure, 
modification, distribution and / or publication of this message without the 
prior written consent of authorized representative of HCL is strictly 
prohibited. If you have received this email in error please delete it and 
notify the sender immediately.
Before opening any email and/or attachments, please check them for viruses and 
other defects.
----------------------------------------------------------------------------------------------------------------------------------------------------
"This e-mail and any attachments transmitted with it are for the sole use of 
the intended recipient(s) and may contain confidential , proprietary or 
privileged information. If you are not the intended recipient, please contact 
the sender by reply e-mail and destroy all copies of the original message. Any 
unauthorized review, use, disclosure, dissemination, forwarding, printing or 
copying of this e-mail or any action taken in reliance on this e-mail is 
strictly prohibited and may be unlawful."
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
http://developer.marklogic.com/pipermail/general/attachments/20150505/227a8999/attachment.html
 

------------------------------

_______________________________________________
General mailing list
General@developer.marklogic.com
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general


End of General Digest, Vol 131, Issue 27
****************************************
_______________________________________________
General mailing list
General@developer.marklogic.com
Manage your subscription at: 
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to