сложный sql-запрос с jpa jpql

Я использую JPA2 для слоя dao.

Предположим, у меня есть следующая таблица (просто образец):

emp_name     week     approver_name  status   hours
emp1       2010-01-02    app1          a        2
emp1       2010-01-02    app1          a        2
emp1       2010-01-02    app2          b        3
emp1       2010-01-09    app1          b        2
emp1       2010-01-09    app2          a        7
emp2       2010-01-02    app1          b        5
emp2       2010-01-02    app2          a        9
emp2       2010-01-02    app1          a        3
emp2       2010-01-09    app2          a        4
emp2       2010-01-09    app2          b        7
emp2       2010-01-09    app1          a        3
emp2       2010-01-09    app1          a        2

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

emp_name     week     approver_name    status  hours (add hours together)
emp1      2010-01-02      app1          a        4
emp1      2010-01-02      app2          b        3
emp1      2010-01-09      app1          b        2
emp1      2010-01-09      app2          a        7
emp2      2010-01-02      app1          b        5
emp2      2010-01-02      app1          a        3
emp2      2010-01-02      app2          a        9
emp2      2010-01-09      app1          a        5
emp2      2010-01-09      app2          a        4
emp2      2010-01-09      app2          b        7

NB: статус также должен различаться. также столбец часов не существует в БД, столбец start_time и end_time

так что у кого-нибудь может быть хорошая идея для этого? Я могу группировать по любому столбцу, потому что это будет смешивать результат.

Спасибо за это.


person ttt    schedule 05.04.2012    source источник


Ответы (1)


Попробуй это:

SELECT emp_name, week, approver_name, status, SUM(hours)
FROM MyTable
GROUP BY emp_name, week, approver_name, status
ORDER BY emp_name, week, approver_name, status
person Michael Rice    schedule 05.04.2012
comment
Спасибо за вашу помощь. это выглядит здорово. однако, если столбцы start_timestamp и end_timestamp заменяют часы, есть ли хороший метод? - person ttt; 05.04.2012
comment
привет Майкл, если в таблице нет столбца часов, только метка времени начала и окончания, как я могу рассчитать правильные часы? - person ttt; 05.04.2012
comment
Не уверен, что JPA поддерживает что-то вроде MySQL TIMESTAMPDIFF. Если он заменяет SUM(часы) на SUM(TIMESTAMPDIFF(HOUR,start,end) - person Michael Rice; 05.04.2012
comment
Если ваши таблицы сгенерированы из объектов JPA, попробуйте использовать @Temporal(TemporalType.TIMESTAMP), если ваши таблицы созданы вручную, измените тип данных столбца на TIMESTAMP, а не DATE (зависит от поставщика). - person JMelnik; 05.04.2012