2016-07-07 55 views
0

我期待創造一個動態的「手推車」字段。這應該計算任何給定日期的類型(如a,b,c)的手推車數量。但是,我不想創建一個僅由類型(A,B,C)計數的靜態列。然而,相反,我會需要一個動態計數,這將取決於'類型',因爲我們目前不知道哪些類型將被使用,因爲這將在每天的基礎上發生變化。如何動態統計具有特定值的記錄總數?

的樣本數據: Sample data for count

我期待在iReport的5.6創建此。

提出的結果

Count By Type

任何想法,將優秀的:)

+1

您可以使用[數據分組](http://jasperreports.sourceforge.net/sample.reference/jasper/index.html#groups)。 JR有變量(* $ V {groupName_COUNT} *)和組中的記錄數 –

+0

在你的情況下,你可以添加*「Type」*列的組(例如* typeGroup * name)並使用* $ V {typeGroup_COUNT} *變量。不要忘記按*類型* –

+0

添加排序另一種方法是在組中記錄的字段數。如果您使用基於* jdbc *的數據源,則可以在sql –

回答

1

您可以使用HashMap來算你的領域,像這樣。

public Map<String, List<Class>> sortByKey(List<Class> values){ 
    Map<String, List<Class>> map = new HashMap<>(); 

    for(Class value : values){ 
     if(map.containsKey(value.type)){ 
      List<Class> valueByKey = map.get(value.type); 
      valueByKey.add(value); 
     } 
     else{ 
      List<Class> newValues = new ArrayList<>(); 
      newValues.add(value); 
      map.put(value.type, newValues); 
     } 
    }  

    return map; 
} 

上面的代碼按鍵排序您的數據,這是在您的示例「類型」字段。然後,您可以通過按特定鍵檢查列表的大小來獲取每種類型的數字。示例波紋管。

List<Class> tmp = map.get("a"); 
int count = tmp.size(); 
相關問題