MS SQL Server递归查询数据

 

表结构

 

 

CREATE   TABLE  District (
    DisCode            
VARCHAR ( 10 ),
    DisName            
VARCHAR ( 10 ),
    DisFatherCode    
VARCHAR ( 10 ),
    HasChild        
BIT
    )
    

 

 




ExpandedBlockStart.gif 代码
; WITH  AllDiscodes  AS  (
            
-- 递归查询出@discode的父级地域,用于筛选最匹配的打折信息
             SELECT  discode,
                   d.DisFatherCode
            
FROM    District d
            
WHERE   d.DisCode  =   ' 652324522218 '
            
UNION   ALL
            
SELECT  d.discode,
                   d.DisFatherCode
            
FROM    District d
                   
INNER   JOIN  AllDiscodes ad
                        
ON   d.discode  =  ad.DisFatherCode
        )
SELECT   *   FROM  alldiscodes
        
        

 

 

复杂一点,树形结构表和其他表有关联
 

 

ExpandedBlockStart.gif 代码


-- 复杂一点,树形结构表和其他表有关联
; WITH  targets  AS  (
        
SELECT   DISTINCT  t.TargetCode,
               t.TargetFatherCode,
               t.TargetName,
               t.Haschild
        
FROM     [ Target ]  t
               
INNER   JOIN  CropTarget ct
                    
ON   t.TargetCode  =  ct.TargetCode
                    
AND  ct.CropClassCode  =   ' zw00010001 '
        
UNION   ALL
        
SELECT  t.TargetCode,
               t.TargetFatherCode,
               t.TargetName,
               t.Haschild
        
FROM     [ Target ]  t
               
INNER   JOIN  targets ts
                    
ON   ts.TargetFatherCode  =  t.targetcode
    )
    
SELECT   DISTINCT  ts. * ,t.TargetName  AS  TargetFatherName
    
FROM    targets ts  left   JOIN   [ Target ]  t  ON  ts.targetfathercode = t.TargetCode 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值