(本文档仅供参考)
问题说明
我在制作报表时,SQL查询的 order by排序不起作用,请问如何解决,复制SQL在原生SQL查询中排序生效,这是为什么?
解决方案
此现象是正常的,因为SQL查询需要嵌套运行。如文本语句select distinct Card_Type_Cd as c1 from debit_card,会变成 select T2.c1 as F4 from (select distinct Card_Type_Cd as c1 from debit_card) T2 运行。这样处理是因为在报表中需要对SQL做处理,如果使用SQL查询不嵌套一层的话,就无法做到去修改原始的SQL查询,这样SQL查询中的预览数据和报表中的过滤、排序等功能就无法实现。
这时候sql中的order by 就变成子查询了,不同数据库不一定可以这样嵌套进行排序,对于SQL查询如果需要进行排序,可通过对输出字段直接设置排序,如下图:
或者使用原生SQL查询制作报表,原生SQL查询是直接将SQL语句通过jdbc驱动发送给数据库,不做二次处理。
关于各类查询的介绍可参考wiki文档:数据集定义