这个SQL语名或存储过程如何写?
 用户表(sys_user) 
 ----------------------------------- 
 用户代码               用户名                     用户部门 
 ----------------------------------- 
 user_code            user_name            user_dept 
 zhangshan            张三                           01 
 lishi                        李四                           02 
 wanglaowu            王老五                     03 
 chengliu               陈六                           04 
 denqi                        邓七                           05     
 部门表(sys_dept) 
 ----------------------------------- 
 部门代码         部门名称                     上级部门 
 ----------------------------------- 
 01                           北京公司                     null 
 02                           北京公司办公室   01 
 03                           上海公司                     null 
 04                           上海公司办公室   03 
 05                           上海公司财务部   03     
 我要用一个存储过程或一个视图(一条SQL语句)返回这样的纪录集最后一个字段是它所属的公司代码,如果他所在部门的上级部门为空就那他的公司代码就是部门代码(如果不是就是它上级部门的代码) 
 -------------------- 
 zhangshan            张三                           01 
 lishi                        李四                           01 
 wanglaowu            王老五                     03 
 chengliu               陈六                           03 
 denqi                        邓七                           03
------解决方案--------------------select   
     a.user_code,a.user_name,isnull(b.上级部门,b.部门代码) as 上级部门 
 from  
     sys_user a 
 left join 
     sys_dept b 
 on 
     a.user_dept=b.部门代码
------解决方案--------------------Select a.user_code,a.user_name,isnull(b.上级部门,a.user_dept) as 上级部门 
 from sys_user as a  
    Left join sys_dept as b on a.user_dept=b.部门代码
------解决方案--------------------Select 
 	user_code, 
 	[user_name], 
 	(Select IsNull(上级部门, 部门代码) From sys_dept Where 部门代码 = A.user_dept) As 上级部门 
 From 
 	sys_user A