在項目腳本中會常用distinct來去除,當去重一不當心趕上order by是就會產生ora-01791錯誤sql
select distinct a.accountno, a.instpdofferid, a.offer_id, a.standfeeid, a.cust_no, a.custaccid, a.subscriberid, a.feecode, a.accstatus, a.price, a.discount, a.money, a.returns, to_char(a.starttime,'yyyy-MM-dd') as starttime, to_char(a.endtime,'yyyy-MM-dd') as endtime, to_char(a.createtime,'yyyy-MM-dd') as createtime, a.cyccount, a.invoprint, a.billprint, a.logno, a.pay_type, a.paymentmoney, b.offer_name, c.standfeename, d.feename, a.accstatus, f_getparamname(a.accstatus,'ACCOUNT_ACCSTATUS') as accStatusName, a.quantily, a.remark, i.invo_no from t_account a, t_pdoffer b, t_prfeestandard c, t_feetype d, t_acinvoiceprintdetail h, T_ACINVOICEPRINTLOG i where a.offer_id = b.offer_id(+) and a.standfeeid = c.standfeeid(+) and a.feecode = d.feecode(+) and a.accountno=h.accountno(+) and h.invoprintid = i.invoprintid(+) and a.cust_no = '00152851' order by a.createtime desc,a.accountno
正確是order by的字段必定要存在在select 查詢字段,上面order by creatime沒有在select 字段中,加上就行了code
select distinct a.accountno, a.instpdofferid, a.offer_id, a.standfeeid, a.cust_no, a.custaccid, a.subscriberid, a.feecode, a.accstatus, a.price, a.discount, a.money, a.returns, to_char(a.starttime,'yyyy-MM-dd') as starttime, to_char(a.endtime,'yyyy-MM-dd') as endtime, to_char(a.createtime,'yyyy-MM-dd') as createtime, a.cyccount, a.invoprint, a.billprint, a.logno, a.pay_type, a.paymentmoney, b.offer_name, c.standfeename, d.feename, a.accstatus, f_getparamname(a.accstatus,'ACCOUNT_ACCSTATUS') as accStatusName, a.quantily, a.remark, i.invo_no, a.createtime from t_account a, t_pdoffer b, t_prfeestandard c, t_feetype d, t_acinvoiceprintdetail h, T_ACINVOICEPRINTLOG i where a.offer_id = b.offer_id(+) and a.standfeeid = c.standfeeid(+) and a.feecode = d.feecode(+) and a.accountno=h.accountno(+) and h.invoprintid = i.invoprintid(+) and a.cust_no = '00152851' order by a.createtime desc,a.accountno