2017-05-27 4 views
-1

によると、私はこのようなテーブルがあります。ROLE_IDのmenu_permission_idがある場合Postgresqlの - グループ

role_menu_id | role_id  | menu_id | menu_permission_id 
42     1   2   4 
41     2   4   NULL 

:私は(ROLE_ID)と、このような最終結果によってグループ化したい

role_menu_id | role_id  | menu_id | menu_permission_id 
38     1   2   1    
39     1   2   2 
40     1   2   3 
41     2   4   NULL 
42     1   2   4 

をnullの場合はNULLを出力します(行番号41を参照)。

しかし、ROLE_IDのmenu_permission_idがnullでない場合は、最大(menu_permission_id)

どのように取得しますか?事前に感謝します

私はまだSQLクエリがありません、混乱しています。

+1

TABLE_NAME GROUP BY ROLE_ID FROM SELECT MAX(role_menu_id)、ROLE_ID、MAX(menu_id)、MAX(menu_permission_id) – Riya

答えて

0

これはあなたにそれを与えるでしょう。

注:2行にmax(menu_permission_id)がある場合、クエリはmax(role_menu_id)の行を返します。

SQL FIddle Demo

select * From 
(select t.*, 
row_Number() over (partition by role_id,menu_id 
        order by role_Menu_id desc) as max_menu 
from table1 t) t1 
where max_menu=1; 
関連する問題