日期:2014-05-17 浏览次数:20437 次
----------------------------------------------------------------
-- Author :DBA_Huangzj(發糞塗牆)
-- Date :2014-01-21 11:14:16
-- 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: )
--
----------------------------------------------------------------
--> 测试数据:[B1]
if object_id('[B1]') is not null drop table [B1]
go
create table [B1]([BID] varchar(6),[sname] varchar(2))
insert [B1]
select '1266','JM' union all
select '1286','DM'
--> 测试数据:[B2]
if object_id('[B2]') is not null drop table [B2]
go
create table [B2]([B2ID] varchar(6),[SID] varchar(6))
insert [B2]
select '1266','DH1500' union all
select '1266','DH1592' union all
select '1266','DH1595' union all
select 'DH1500','E89876' union all
select 'DH1500','E89896'
--------------开始查询--------------------------
DECLARE @a VARCHAR(10)
SET @a='JM'
;WITH cte AS (
SELECT a.* ,1 [level]
FROM b2 a LEFT JOIN b2 b ON b.SID=a.b2id
WHERE b.b2id IS NULL AND b.SID IS NULL AND a.b2id IN (SELECT bid FROM b1 WHERE [sname]=@a)
),cte2 AS
(
SELECT *
FROM cte
UNION ALL
SELECT a.b2id,a.SID,b.[level]+1 [level]
FROM B2 a INNER JOIN cte2 b ON b.SID=a.b2id
)
SELECT b2id MainID ,SID
FROM cte2