2012-04-05 10 views
0

私はdao層にJPA2を使用します。jpa jpqlを使用した複雑なsqlクエリ

次のように私は(ちょうどサンプルを)テーブルがあるとします。

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 
のような結果を得ることができます

注意:ステータスも区別する必要があります。また、時間の列はdbに存在しません、列はstart_timeとend_timeです

だから誰もそのために良いアイデアを持つことができますか?私は結果を混ぜるので、どの列でもグループ化することができます。

ありがとうございます。

答えて

0

これを試してください:あなたの助けのための

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 
+0

感謝を。それは素晴らしいようです。 ただし、start_timestamp列とend_timestamp列が時間を置き換える場合は、良い方法はありますか? – ttt

+1

マイケル、テーブルに時間の列がない場合は、タイムスタンプの開始と終了のみ、正しい時間をどのように計算できますか? – ttt

+0

JPAがMySQLのTIMESTAMPDIFFのようなものをサポートしているかどうかは不明です。 –