2016-05-19 4 views
0

У меня есть ниже данные, которые я извлекаться из базы данных с помощью Hibernate NamedQueryОбъединить данные по дате

TXN_ID END_DATE 
---------- ------------ 
     121 15-JUN-16 
     122 15-JUN-16 
     123 16-MAY-16 

Каждые строки данных можно хранить в классе Object Java. Теперь я хочу объединить данные в зависимости от END_DATE. Если END_DATE совпадают, то слияние данных TXN_ID.

Из вышеприведенного вывода данных будет:

TXN_ID  END_DATE 
---------- ------------ 
121|122 15-JUN-16 
123  16-MAY-16 

Я хочу, чтобы сделать эту программу в Java. Какая простая программа для этого?

+2

, что вы уже пробовали до сих пор .. ?? – Simmant

ответ

0

Использование принятой функции printMap, чтобы выполнить итерацию через hashmap, чтобы проверить правильность вывода.

С ниже код:

public static void main(String[] args) { 
    String[][] b = {{"1","15-JUN-16"},{"2","16-JUN-16"},{"3","13-JUN-16"},{"4","16-JUN-16"},{"5","17-JUN-16"}}; 
    Map<String, String> mapb = new HashMap<String,String>(); 

    for(int j=0; j<b.length; j++){ 
     String c = mapb.get(b[j][1]); 
     if(c == null) 
      mapb.put(b[j][1], b[j][0]); 
     else 
      mapb.put(b[j][1], c+" "+b[j][0]); 
    } 
    printMap(mapb); 
} 

Вы получаете следующий вывод:

13-JUN-16 = 3 
16-JUN-16 = 2 4 
17-JUN-16 = 5 
15-JUN-16 = 1 

Я думаю, что это решит вашу проблему.

0

С зимовать вы можете поместить результат запроса в виде списка объектов

Query q = session.createSQLQuery(sql).addEntity(ObjDataQuery.class); 
List<ObjDataQuery> res = q.list(); 

Теперь вы можете создать HashMap для хранения конечного результата, чтобы заполнить этот объект можно перебрать res

Map<String, String> finalResult= new HashMap<>(); 
for (int i=0; i<res.size(); i++){ 
    if (finalResult.get(res.get(i).date!=null){ 
     //new element 
     finalResult.put(res.get(i).date,res.get(i).txn) 
    } else { 
     //update element 
     finalResult.put(res.get(i).date, 
         finalResult.get(res.get(i).date) + res.get(i).txn) 
    } 
} 

Я не проверял его по логике, должно быть правильно.

Другой способ изменить запрос, чтобы получить прямой конечный результат (в оракула см LISTAGG)

Смежные вопросы