在crystal用户定义的命令中忽略了order by子句

时间:2016-05-03 14:16:52

标签: plsql crystal-reports listagg

我在crystal 2013中使用以下查询作为用户定义的命令命令。它在sql developer中正确地返回并命令,但是当我将它添加到我的报告中时,字段要么返回两次,要么/或者顺序错误。它应该根据ID上升返回行,例如39-40-41-42。但返回39-41-40-42 ...或3939-4141-4040-4242。所以似乎有一种模式......

select ad.arinvt_id,
ud.parent_id, listagg(ud.cuser, '') within group (order by ud.parent_id) as sfdt, 
listagg(ud.ud_cols_id, '') within group (order by ud.ud_cols_id) as uci
from arinvoice_detail ad
left join ud_data ud
on ad.arinvt_id = ud.parent_id
where ad.arinvt_id = ud.parent_id
and ud.ud_cols_id in (39, 40, 41, 42)
group by ad.arinvt_id, ud.parent_id

我找不到多少,我发现的是在不同的平台上。非常感谢任何帮助!

我看到了这个: How to define a custom order in ORDER BY clause? 并试图改为

(order by field(xyz))

但是水晶不会这样做。

1 个答案:

答案 0 :(得分:0)

我把表连接两次。一旦进入命令,再次进入水晶。不知道为什么它有时会复制而不是其他,或者为什么订单有所偏差..但是下面的命令到目前为止都有效。

select
ud.parent_id, 
listagg(ud.cuser, '') within group (order by ud.ud_cols_id) as sfdt
from ud_data ud
where ud.ud_cols_id in (39, 40, 41, 42)
group by ud.parent_id