我有一张这样的表:
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
我想分组(role_id)和最终结果如下:
role_menu_id | role_id | menu_id | menu_permission_id
42 1 2 4
41 2 4 NULL
如果role_id的menu_permission_id为null,则打印NULL(参见:第41行)。
但是,如果role_id的menu_permission_id不为null,则获取max(menu_permission_id)
如何?提前致谢
我还没有SQL查询,因为很困惑。
答案 0 :(得分:0)
这会给你这个。
注意:如果2行有max(menu_permission_id)
,则查询将返回max(role_menu_id)
行。
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;