0

我很難表示此查詢,我爲從給定'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次的紀錄。我被困在這個階段。請提供一些指導,以便通過分組獲得記錄。

在此先感謝。

回答

0

你想這種類型的查詢

選擇MAX(月),馬克斯(年)從UID演示組;

+0

感謝Dheeraj和是的,我想要相同類型的查詢。上面的查詢很好,但同一年。當我改變年份時,它只返回一個結果。 – James 2015-02-08 17:53:28

+0

它不僅應該返回整個對象不僅最大月份和年份。 – James 2015-02-08 19:18:09

0

我覺得你的問題的解決方案

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