34,594
社区成员
发帖
与我相关
我的任务
分享
----------------------------------------------------------------
-- 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(18),[parentid] int)
insert [部门表]
select 1,'北京AAA汇杰',0 union all
select 2,'研发/北京AAA汇',1 union all
select 3,'测试部/北京AAA汇',1 union all
select 4,'测试1/测试部/北',3 union all
select 8,'测试2/测试部/北',3 union all
select 9,'测试小组1/测试2/测',8 union all
select 10,'测试小组2/测试2/测',8 union all
select 5,'研发1/研发/北京',2 union all
select 6,'研发2/研发/北京',2 union all
select 7,'研发3/研发/北京',2
--------------开始查询--------------------------
;WITH cte AS (
select deptid,CONVERT(VARCHAR(MAX),name_cn)name_cn,parentid
from [部门表]
WHERE parentid=0
UNION ALL
SELECT a.deptid,CONVERT(VARCHAR(MAX),a.name_cn)+'/'+CONVERT(VARCHAR(MAX),b.name_cn) name_cn,a.parentid
FROM [部门表] a INNER JOIN cte b ON a.parentid=b.deptid
)
SELECT deptid,name_cn
FROM cte
WHERE deptid=10
--select a.*,b.name_cn
--from [顾客表] a INNER JOIN cte b ON a.[Cus_deptId]=b.deptid
----------------结果----------------------------
/*
deptid name_cn
----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
10 测试小组2/测试2/测/测试2/测试部/北/测试部/北京AAA汇/北京AAA汇杰
*/
----------------------------------------------------------------
-- 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(18),[parentid] int)
insert [部门表]
select 1,'北京AAA汇杰',0 union all
select 2,'研发/北京AAA汇',1 union all
select 3,'测试部/北京AAA汇',1 union all
select 4,'测试1/测试部/北',3 union all
select 8,'测试2/测试部/北',3 union all
select 9,'测试小组1/测试2/测',8 union all
select 10,'测试小组2/测试2/测',8 union all
select 5,'研发1/研发/北京',2 union all
select 6,'研发2/研发/北京',2 union all
select 7,'研发3/研发/北京',2
--------------开始查询--------------------------
;WITH cte AS (
select deptid,CONVERT(VARCHAR(MAX),name_cn)name_cn,parentid
from [部门表]
WHERE parentid=0
UNION ALL
SELECT a.deptid,CONVERT(VARCHAR(MAX),a.name_cn)+'/'+CONVERT(VARCHAR(MAX),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/测试部/北/测试部/北京AAA汇/北京AAA汇杰
2 xdx 6 sss 研发2/研发/北京/研发/北京AAA汇/北京AAA汇杰
*/
----------------------------------------------------------------
-- 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(18),[parentid] int)
insert [部门表]
select 1,'北京AAA汇杰',0 union all
select 2,'研发/北京AAA汇',1 union all
select 3,'测试部/北京AAA汇',1 union all
select 4,'测试1/测试部/北',3 union all
select 8,'测试2/测试部/北',3 union all
select 9,'测试小组1/测试2/测',8 union all
select 10,'测试小组2/测试2/测',8 union all
select 5,'研发1/研发/北京',2 union all
select 6,'研发2/研发/北京',2 union all
select 7,'研发3/研发/北京',2
--------------开始查询--------------------------
;WITH cte AS (
select deptid,CONVERT(VARCHAR(100),name_cn)name_cn,parentid
from [部门表]
WHERE parentid=0
UNION ALL
SELECT a.deptid,CONVERT(VARCHAR(50),a.name_cn)+'/'+CONVERT(VARCHAR(49),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/测试部/北/测试部/北京AAA汇/北京AAA汇杰
2 xdx 6 sss 研发2/研发/北京/研发/北京AAA汇/北京AAA汇杰
*/
;WITH cte AS (
select deptid,CONVERT(VARCHAR(100),name_cn)name_cn,parentid
from [部门表]
WHERE parentid=0
UNION ALL
SELECT a.deptid,CONVERT(VARCHAR(90),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