Please start any new threads on our new 
    site at https://forums.sqlteam.com.  We've got lots of great SQL Server
    experts to answer whatever question you can come up with. 
    
        
            
                
                    
                        
                            
                                | Author | 
                                
                                 Topic  | 
                             
                            
                                    | 
                                         atulkukreja 
                                        Starting Member 
                                         
                                        
                                        13 Posts  | 
                                        
                                        
                                            
                                            
                                             Posted - 2012-01-11 : 09:02:04
                                            
  | 
                                             
                                            
                                            | Using SQL Server 2005 Express, table / data definition:CREATE TABLE [dbo].[rolePrivileges] (	[role] varchar(50) NOT NULL,	[create] char(1) NOT NULL  DEFAULT 'N',	[read] char(1) NOT NULL  DEFAULT 'N',	[update] char(1) NOT NULL  DEFAULT 'N',	[delete] char(1) NOT NULL  DEFAULT 'N') ON [PRIMARY]INSERT INTO [rolePrivileges] ([role],[create],[read],[update],[delete]) VALUES ('admin', 'Y', 'Y', 'N', 'N')INSERT INTO [rolePrivileges] ([role],[create],[read],[update],[delete])  VALUES ('manager', 'N','Y','N','Y')INSERT INTO [rolePrivileges] ([role],[create],[read],[update],[delete]) VALUES ('staff', 'N','Y','Y','N')CREATE TABLE [dbo].[userRoles] (	[user] varchar(50) NOT NULL,	[role] varchar(50) NOT NULL) ON [PRIMARY]INSERT INTO [userRoles] ([user], [role]) VALUES ('jim', 'admin')INSERT INTO [userRoles] ([user], [role]) VALUES ('jim', 'manager')A user may be assigned multiple roles, and gets the highest privilege allowed by any role to which he is assigned.I need to display a single row with user jim's privileges, based on the two roles he is assigned. So the result I need is:user  create  read  update   delete-----------------------------------jim     Y      Y      N        YLogically, if any role has a privilege with a 'Y', it needs to be displayed as a 'Y', else it remains an 'N'Any help in writing the SQL statement is greatly appreciated.scptech | 
                                             
                                         
                                     | 
                             
       
                            
                       
                          
                            
                                    | 
                                     khtan 
                                    In (Som, Ni, Yak) 
                                     
                                    
                                    17689 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2012-01-11 : 09:07:42
                                          
  | 
                                         
                                        
                                          [code]select	r.[user],	max(case when p.privilege = 'create' then allow end) as [create],	max(case when p.privilege = 'read'   then allow end) as [read],	max(case when p.privilege = 'update' then allow end) as [update],	max(case when p.privilege = 'delete' then allow end) as [delete]from	userRoles r	inner join rolePrivileges p	on	r.role	= p.rolegroup by r.[user][/code] KH[spoiler]Time is always against us[/spoiler]  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     atulkukreja 
                                    Starting Member 
                                     
                                    
                                    13 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2012-01-11 : 12:01:51
                                          
  | 
                                         
                                        
                                          | My apologies, I had the wrong DDL for one table, it has been updated.  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     visakh16 
                                    Very Important crosS Applying yaK Herder 
                                     
                                    
                                    52326 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2012-01-11 : 12:40:22
                                          
  | 
                                         
                                        
                                          as per modified DDL, i think you need belowselect	r.[user],	max(case when p.create = 'Y' then 'Y' else 'N' end) as [create],	max(case when p.read = 'Y' then 'Y' else 'N' end) as [read],	max(case when p.update = 'Y' then 'Y' else 'N' end) as [update],	max(case when p.delete = 'Y' then 'Y' else 'N' end) as [delete]from	userRoles r	inner join rolePrivileges p	on	r.role	= p.rolegroup by r.[user] ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     atulkukreja 
                                    Starting Member 
                                     
                                    
                                    13 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2012-01-11 : 12:52:09
                                          
  | 
                                         
                                        
                                          | visakh16 - thanks, that works.Since the value for each privilege is either Y or N, is there any need for the case construct? So can the SQL not be:select	r.[user], max(p.create) as [create], ......from	userRoles r	inner join rolePrivileges p	on	r.role	= p.rolegroup by r.[user]scptech  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     visakh16 
                                    Very Important crosS Applying yaK Herder 
                                     
                                    
                                    52326 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2012-01-11 : 12:53:52
                                          
  | 
                                         
                                        
                                          | yep even that would do for current data set------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                            
                                | 
                                    
                                      
                                     
                                    
                                 | 
                             
                         
                     | 
                 
             
         |   
     
     
            
              
	     |  
		
			
     
          
		 |