2013-10-08 78 views
0

運行查詢(DB2)後,結果集有4列。獲取結果集的不同列的計數

res1=resultset.getString(Em); 
res2=resultset.getString(Posc); 
res3=resultset.getString(Cal); 
res4=resultset.getString(Ern); 

的輸出如下所示如下:

Em  Posc Cal Ern 
305  1  2 N 
306  1  2 N 
307  2  3 Y  
  • 所有Em是獨特
  • Posc可以是任意整數
  • Cal可以是任意整數
  • Ern可以是N或Y

我該如何編碼以獲得不同值的計數:Posc,CalErn

例如,我怎樣才能得到所有的1,2等的數量,無論可能是什麼值Posc

同樣如何獲得其他列的計數。

+0

是否要更改您的Java代碼或想要返回該信息的SQL查詢? –

+0

我有sql查詢。我想要java代碼,可以獲取結果 –

+0

您需要列或行數中的所有元素的總和?或者列數? –

回答

0

創建一個Map<Integer,Integer>列的值作爲鍵和一個計數作爲值。

對於Posc的每個值,您都會檢查映射是否包含值作爲鍵。如果它遞增計數值

對於Posc例如如果未使用值1。添加它(我假設你是循環的結果集反正...)

Map<Integer,Integer> countsOfPoscValues = new HashMap<Integer,Integer> 

//Result set loop 
{ 
    //Get values 
    Integer posc = //.... 
    if(countsOfPoscValues.containsKey(posc)) 
    { 
     countsOfPoscValues.put(posc, countsOfPoscValues.get(posc)+1); 
    } 
    else 
     countsOfPoscValues.put(posc, 1); 
    //....etc 
} 
0

您需要如下所示:

 Map<Integer,Integer> emCount = new HashMap<>(); 
     Map<Integer,Integer> poscCount = new HashMap<>(); 
     Map<String,Integer> calCount = new HashMap<>(); 

     while (resultset.next()) { 
      final int em = resultset.getInt(Em); 
      final int posc = resultset.getInt(Posc); 
      final String cal = resultset.getString(Cal); 

      emCount = putKeyValue(emCount,em); 
      poscCount = putKeyValue(poscCount ,em); 
      calCount = putKeyValue(calCount ,em); 
     } 

public Map<Object, Integer> putKeyValue(Map<Object, Integer> colCount, Object val) { 
    if (colCount.containsKey(val)) { 
     colCount.put(val, colCount.get(val).intValue() + 1); 
    } else { 
     colCount.put(val, 1); 
    } 

    return colCount; 
}