求一个级联的查询的sql
顾客表
CusnoCusNameCus_deptIdCusTel
1zjf4 13
2xdx6 sss
部门表
DeptIdName_cn ParentIdPhone
1AA公司 0111111
2研发 1 22222
3测试部 1 333
4测试1 3 aaa
5研发1 2 啊啊
6研发2 2bb
7研发3 2ss
8测试2 3ssss
我要查询一下
cusnocusnamecus_deptidcustel 还要一列
1zjf4 1111 AA公司/测试部/测试1
2xdx6 sss AA公司/研发/研发2
请大神帮忙看看
[解决办法]
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2013-12-09 17:15:01
-- Version:
-- Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
--Dec 28 2012 20:23:12
--Copyright (c) Microsoft Corporation
--Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[顾客表]
if object_id('[顾客表]') is not null drop table [顾客表]
go
create table [顾客表]([Cusno] int,[CusName] varchar(3),[Cus_deptId] int,[CusTel] varchar(3))
insert [顾客表]
select 1,'zjf',4,'13' union all
select 2,'xdx',6,'sss'
--> 测试数据:[部门表]
if object_id('[部门表]') is not null drop table [部门表]
go
create table [部门表]([DeptId] int,[Name_cn] varchar(6),[ParentId] int,[Phone] varchar(6))
insert [部门表]
select 1,'AA公司',0,'111111' union all
select 2,'研发',1,'22222' union all
select 3,'测试部',1,'333' union all
select 4,'测试1',3,'aaa' union all
select 5,'研发1',2,'啊啊' union all
select 6,'研发2',2,'bb' union all
select 7,'研发3',2,'ss' union all
select 8,'测试2',3,'ssss'
--------------开始查询--------------------------
;WITH cte AS (
select deptid,CONVERT(VARCHAR(20),name_cn)name_cn,parentid
from [部门表]
WHERE parentid=0
UNION ALL
SELECT a.deptid,CONVERT(VARCHAR(10),a.name_cn)+'/'+CONVERT(VARCHAR(9),b.name_cn) name_cn,a.parentid
FROM [部门表] a INNER JOIN cte b ON a.parentid=b.deptid)
--SELECT deptid,name_cn
-- FROM cte
select a.*,b.name_cn
from [顾客表] a INNER JOIN cte b ON a.[Cus_deptId]=b.deptid
----------------结果----------------------------
/*
Cusno CusName Cus_deptId CusTel name_cn
----------- ------- ----------- ------ --------------------
1 zjf 4 13 测试1/测试部/AA
2 xdx 6 sss 研发2/研发/AA公
*/