基于最大年份和最大月份的休眠排序表以及使用条件按ID分组

问题描述:

我很难表示此查询,我为从给定'uid'中选择最大月份和最大年份行编写该查询。我有6个数据,其中3个数据具有uid'4',其他3个数据具有uid'5'。我想从uid 4和5中获取最大月份和最大年份数据。这是我的标准查询,我得到了这个结果。基于最大年份和最大月份的休眠排序表以及使用条件按ID分组

结果列表的大小:2
UID:5的NID:CDF月份:11年:2012
UID:4的NID:F58月份:10年:2012

但是,当我改变从2012年到2013年的uid年份只返回uid 4的行。

DetachedCriteria maxYearQuery = DetachedCriteria.forClass(Demo.class); 
     ProjectionList yearProj = Projections.projectionList(); 
     yearProj.add(Projections.max("contextYear")); 
     yearProj.add(Projections.max("contextMonth")); 
     yearProj.add(Projections.groupProperty("entityUUID")); 
     maxYearQuery.setProjection(yearProj); 

    Criteria crit = session.createCriteria(Demo.class); 
      crit.add(Subqueries.propertiesIn(new String[] {"contextYear","contextMonth", "entityUUID"}, maxYearQuery)); 
      crit.addOrder(Order.desc("entityUUID")); 

我的表看起来像这样..

>

UID:4的NID:CDF月份:10年:2012

UID:4的NID:F58月份:9年:2012

UID:5的NID:F58月:8年:2012

UID:5的NID:F58月份:11年度: 2012

UID:5的NID:F58月份:10年度:2013

UID:4的NID:F58月份:9年:2012

我想从我的数据库中的第1次和第5次的纪录。我被困在这个阶段。请提供一些指导,以便通过分组获得记录。

在此先感谢。

你想这种类型的查询

选择MAX(月),马克斯(年)从UID演示组;

+0

感谢Dheeraj和是的,我想要相同类型的查询。上面的查询很好,但同一年。当我改变年份时,它只返回一个结果。 – James 2015-02-08 17:53:28

+0

它不仅应该返回整个对象不仅最大月份和年份。 – James 2015-02-08 19:18:09

我觉得你的问题的解决方案

Supose名字是演示,并在其中三列的UID,月,年

查询:

选择a.uid,a.year,最大(月)从Demo内部连接(从Demo组中选择uid,max(year)m减1)a.uid = d.uid和a.year = dm group减2;

它会正常工作检查它并给我反馈

+0

嘿Dheeraj感谢您的查询。不过,我只需要使用标准。 – James 2015-02-23 13:05:29