【场景】SQL账表常见报错

除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

金蝶SQL账表常见问题:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效-编程日记

【SQL账表SQL】

金蝶SQL账表常见问题:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效-编程日记

select fbillno,fcreatedate from t_pur_poorder where fcreatedate >= '#InputDate#' order by fcreatedate

【分析】<1>开启SQL监控分析sql监控

金蝶SQL账表常见问题:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效-编程日记

<2>分析sql确实报错,平台会针对sql套一个壳,做分页行号rownumbder,因此原sql语句作为子查询,因此不能排序

金蝶SQL账表常见问题:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效-编程日记

【变通方案】如果需要按照sql直接查询得到结果(不套壳),应当勾选存储过程(即使不是存储过程也可以,最终的目的是直接执行得到数据结果)金蝶SQL账表常见问题:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效-编程日记

金蝶SQL账表常见问题:ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效-编程日记

【结论】如果需要按照sql直接查询得到结果(不套壳),应当勾选存储过程

【说明】普通sql的分页是由数据库实现,存储过程的分页是内存实现(一次查询所有)