当前位置: 代码迷 >> Sql Server >> 级联的查询的sql
  详细解决方案

级联的查询的sql

热度:10   发布时间:2016-04-24 19:37:18.0
求一个级联的查询的sql
顾客表
Cusno CusName Cus_deptId CusTel
1 zjf 4         13
2 xdx 6         sss
部门表
DeptId Name_cn      ParentId Phone
1 AA公司     0 111111
2 研发           1    22222
3 测试部           1   333
4 测试1            3  aaa
5 研发1         2  啊啊
6 研发2         2 bb
7 研发3         2 ss
8 测试2         3 ssss

我要查询一下
cusno cusname cus_deptid custel   还要一列
1 zjf 4        1111      AA公司/测试部/测试1
2 xdx 6        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公
*/
  相关解决方案