ssh中的order by问题(关于包含有sum的sql运算如何排序)

lh9823 2008-05-20 11:21:03
SQL是
select * from(select nsr.nsrsbh as nsrsbh,nsr.nsrmc as nsrmc,sum(nvl(dlsj.dlfp_Cg_Fs,0)) as dlfpCgFs,sum(nvl(dlsj.dlfp_Cg_Je,0)) as dlfpCgJe,sum(nvl(dlsj.dlfp_Cg_Se,0)) as dlfpCgSe,sum(nvl(dlsj.dlfp_Dk_Fs,0)) as dlfpDkFs,sum(nvl(dlsj.dlfp_Dk_Je,0)) as dlfpDkJe,sum(nvl(dlsj.dlfp_Dk_Se,0)) as dlfpDkSe,nsr.nsr_Swjg_Dm as nsrSwjgDm from Tj_Nsrydsj dlsj,Dj_Nsrxx nsr where dlsj.nsrsbh = nsr.nsrsbh and dlsj.ssny >= '200801' and dlsj.ssny <= '200801' and nsr.nsr_Swjg_Dm like '1331%' group by nsr.nsrsbh,nsr.nsrmc,nsr.nsr_Swjg_Dm) order by dlfpCgFs
目的对sum的运算的这些字段可进行ORDER BY排序,本来想利用传统SQL而不用HQL,
Session session = rdao.getHibernateTemplate().getSessionFactory().openSession();
List list = session.createSQLQuery(SQL).addEntity("dlsj",TjNsrydsj.class).addEntity("nsr", DjDlNsrxx.class).class).list();
采用以上的方法老报错 提示列名无效,上面的SQL中对2张表的字段并未取全,但是直接在数据库中执行SQL是无任何错误的。请教大家用SSH的架构下如何对含有SUM运算的SQL使用ORDER BY.急求 望各位大哥帮忙。
...全文
389 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fosjos 2008-05-21
  • 打赏
  • 举报
回复
复杂的sql最好别用hql,hibernate生成的sql结构会很复杂,效率很低
lh9823 2008-05-21
  • 打赏
  • 举报
回复
感谢楼上回复,我去试下
老紫竹 2008-05-21
  • 打赏
  • 举报
回复
order by sum(nvl(dlsj.dlfp_Cg_Je,0))

这种情况下,别名没有用的。
lh9823 2008-05-20
  • 打赏
  • 举报
回复
回楼上不是这个原因 聚合函数外的所有列都已经在GROUP BY中列出了,这个SQL直接在数据库中执行是没任何问题的,返回的结果集也正确,现在的问题是用SSH的框架模式 使用传统SQL并且SQL比较复杂时有多表的情况下并且有SUM运算的时候怎么使用排序,我用session.createSQLQuery(sql)的模式使用传统SQL老是出错
maodie007 2008-05-20
  • 打赏
  • 举报
回复
group by 后面必须列出除聚合函数列外的所有列

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧