日期:2014-05-19  浏览次数:20597 次

这个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