BOM展开SQL语句

来源:互联网 发布:游鹿网络 编辑:程序博客网 时间:2024/05/22 14:49

--示例数据  
  create   table   tb(父物料   varchar(10),子物料   varchar(10))  
  insert   tb   select   'A1','B1'  
  union   all   select   'A1','B2'  
  union   all   select   'A1','B3'  
  union   all   select   'B1','C1'  
  union   all   select   'B1','C2'  
  union   all   select   'C1','D1'  
  union   all   select   'C1','D2'  
  go  
   
  --查询自定义函数  
  create   function   f_cid(  
  @物料   varchar(10)  
  )returns   @re   table(物料   varchar(10),[level]   int)  
  as  
  begin  
  declare   @l   int  
  set   @l=0  
  insert   @re   select   子物料,@l   from   tb   where   父物料=@物料  
  while   @@rowcount>0  
  begin  
  set   @l=@l+1  
  insert   @re   select   a.子物料,@l  
  from   tb   a,@re   b  
  where   a.父物料=b.物料   and   b.[level]=@l-1  
  end  
  return  
  end  
  go  
   
  --查询物料A1的物料  
  select   *   from   f_cid('A1')  
  go  
   
  --删除测试  
  drop   table   tb  
  drop   function   f_cid  
   
  /*--结果  
  物料                   level                
  ----------   -----------    
  B1                   0  
  B2                   0  
  B3                   0  
  C1                   1  
  C2                   1  
  D1                   2  
  D2                   2  
   
  (所影响的行数为   7   行)  
  --*/   
 

原创粉丝点击