有如下数据:
roleid  systemid  moduleid  moduleurl  employeeid  rightvalue
1       1         21        aa.aspx    14          0011 (备注:第一位表示查看,第二位新增,第三位修改,第四位删除)
2       1         21        aa.aspx    14          0001       
3       1         21        aa.aspx    14          1001  
1       2         22        bb.aspx    14          1001
2       2         22        bb.aspx    14          0001       
3       2         22        bb.aspx    14          0101 想得到数据:
systemid  moduleid  moduleurl  employeeid  rightvalue      
1         21        aa.aspx    14          1011  
2         22        bb.aspx    14          1101也就是说一个人可能属于多个角色roleid,每个角色的权限不同,我想得到他的最大权限比如0011、0001、1001,他们的最大权限值为1011(1表示有权限,0表示没有)

解决方案 »

  1.   

    SELECT systemid,moduleid,moduleurl,employeeid ,
           max( rightvalue )  rightvalue 
    FROM tb
    GROUP BY systemid,moduleid,moduleurl,employeeid  
      

  2.   

    select systemid  moduleid  moduleurl  employeeid  sum(rightvalue) as rightvalue
    from table
    group by systemid  moduleid  moduleurl  employeeid  
      

  3.   

    select min(roleid),  systemid , max(moduleid) , max(moduleurl) , max(employeeid) , max(substring(rightvalue,1,1)+max(substring(rightvalue,2,1)+max(substring(rightvalue,3,1)+max(substring(rightvalue,4,1) as rightvalue
    from temp group by systemid
      

  4.   

    rightvalue是字符型,不是数字型,不能用sum吧。
      

  5.   

    select systemid,moduleid,moduleurl,employeeid,
    max(left(rightvalue,1))+max(substring(rightvalue,2,1))+max(substring(rightvalue,3,1))+max(right(rightvalue,1)) as rightvalue 
    from T group by systemid ,moduleid ,moduleurl,employeeid 
      

  6.   

    select min(roleid),  systemid , max(moduleid) , max(moduleurl) , max(employeeid) , max(substring(rightvalue,1,1)+max(substring(rightvalue,2,1)+max(substring(rightvalue,3,1)+max(substring(rightvalue,4,1) as rightvalue 
    from temp group by systemid不可以吗?
      

  7.   

    我是在oracle中用的,这个就对了。
    select  systemid,moduleid,moduleurl,employeeid , 
     max(substr(rightvalue,1,1)) || max(substr(rightvalue,2,1))||max(substr(rightvalue,3,1))||max(substr(rightvalue,4,1)) as rightvalue 
    from sys_employeemodule_view group by systemid,moduleid,moduleurl,employeeid