成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

遍歷BOM表的SQL函數

數據庫 SQL Server
SQL函數可以實現諸多的功能,下文就介紹了一個用于實現遍歷BOM表的方法,如果您對此方面感興趣的話,不妨一看。

SQL函數的種類很多,實現的功能也不太一樣。下面為您介紹的是用于遍歷BOM表的SQL函數,希望可以讓您對SQL函數有更多的了解。

表結構如下:
ptype subptype amount
a  a.120
a  a.2 15
a  a.3 10
a. 1 a.1.1 20
a.1a.1.2  15
a.1 a.1.330
a.2 a.2.110
a.2 a.2.2 20
a.1.1 a.1.1.1 45
a.1.1 a.1.1.2 15
a.2.1 a.2.1.1 20
a.2.2 a.2.2.1 13

  1. create table matgroup(parentgroup varchar(50),childgroup varchar(50), mount float)  
  2.  
  3. insert into matgroup   
  4. select 'a',  'a.1',20  
  5. union select 'a',  'a.2', 15  
  6. union select 'a',  'a.3', 10  
  7. union select 'a.1', 'a.1.1', 20  
  8. union select 'a.1','a.1.2',  15  
  9. union select 'a.1', 'a.1.3',30  
  10. union select 'a.2', 'a.2.1',10  
  11. union select 'a.2', 'a.2.2', 20  
  12. union select 'a.1.1', 'a.1.1.1', 45  
  13. union select 'a.1.1', 'a.1.1.2', 15  
  14. union select 'a.2.1' ,'a.2.1.1', 20  
  15. union select 'a.2.2', 'a.2.2.1', 13  

函數如下:

  1. create FUNCTION fn_aaa (@matgroup varchar(50),@mount int )  
  2. RETURNS @retPLExpand TABLE (parentgroup varchar(50),childgroup varchar(50), mount float)  
  3.  
  4. AS  
  5. BEGIN  
  6. DECLARE @RowsAdded int  
  7. declare @PLExpand Table (parentgroup varchar(50),childgroup varchar(50), mount float,processed tinyint default(0))  
  8.  
  9. INSERT @PLExpand  
  10.  SELECT b.parentgroup,b.childgroup, @mount*b.mount, 0  
  11.  FROM matgroup b   
  12.  WHERE b.parentgroup=@matgroup  
  13. SET @RowsAdded = @@rowcount  
  14.  
  15. -- While new employees were added in the previous iteration  
  16.  
  17. WHILE @RowsAdded > 0  
  18.  
  19. BEGIN  
  20. /*Mark all employee records whose direct reports are going to be   
  21. found in this iteration with processed=1.*/  
  22. UPDATE @PLExpand  
  23. SET processed = 1 
  24. WHERE processed = 0 
  25.  
  26. -- Insert employees who report to employees marked 1.  
  27. INSERT @PLExpand  
  28. SELECT a.parentgroup,a.childgroup,a.mount*b.mount , 0  
  29. FROM matgroup a inner join @PLExpand b on a.parentgroup=b.childgroup  
  30.   where b.processed = 1 
  31.  
  32. SET @RowsAdded = @@rowcount  
  33. /*Mark all employee records whose direct reports have been found  
  34. in this iteration.*/  
  35.  
  36. UPDATE @PLExpand  
  37. SET processed = 2 
  38. WHERE processed = 1 
  39. END  
  40.  
  41. -- copy to the result of the function the required columns  
  42. INSERT @retPLExpand  
  43. SELECT parentgroup,childgroup,mount  
  44. FROM @PLExpand  
  45. RETURN  
  46. END  

調用方法如下:
select * from fn_aaa('a.1')
意思是找出a.1下的所有兒子及孫子.
 
 

 

 

【編輯推薦】

動態sql中使用臨時表的實例

Oracle存儲過程使用動態SQL

SQL Server刪除視圖的兩種方法

SQL Server視圖的使用

sql server表格變量的用法

責任編輯:段燃 來源: 互聯網
相關推薦

2010-09-09 13:32:14

SQL函數遍歷

2010-11-12 14:10:15

SQL遍歷父子關系表

2010-11-11 10:41:03

sql server遍

2010-09-06 16:52:17

SQL函數

2010-11-11 10:53:22

SQL Server遍

2010-11-11 11:00:06

sql server遍

2010-09-16 14:38:55

Sql server表

2010-09-16 09:15:59

SQL函數

2010-09-09 11:23:17

SQL函數格式

2010-09-14 15:51:15

sql遍歷

2025-03-03 10:51:29

SQL數據庫MySQL

2010-11-24 13:11:06

MySQL遍歷數據表

2010-07-02 09:00:57

jQuery

2010-09-09 16:40:58

SQL循環游標

2010-09-17 16:03:17

鎖定SQL表

2010-09-16 14:13:11

SQL Server系

2010-09-10 15:51:51

SQL分析函數

2010-09-06 14:42:56

SQL函數

2010-09-24 19:28:12

SQL CHARIND

2010-09-06 14:17:04

SQL函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久成人 | 网站黄色av | 99精品久久99久久久久 | 欧美久久久| 精品视频一区在线 | 99国产精品视频免费观看一公开 | 亚洲1区 | 亚洲精品久久久蜜桃网站 | 香蕉一区二区 | 国内精品99 | 91久操视频 | www.亚洲精品 | 7777在线| 色婷婷综合久久久中文字幕 | 免费成人高清 | 麻豆久久精品 | 香蕉大人久久国产成人av | 精品一二三区 | 国产精品女人久久久 | 亚洲国产免费 | 美美女高清毛片视频免费观看 | 九色在线| 日韩高清中文字幕 | 国产一级在线 | 亚洲欧美精品国产一级在线 | 韩日在线视频 | 精品国产一区二区三区久久久四川 | 久久久久国色av免费观看性色 | 欧美一级欧美一级在线播放 | 成人欧美一区二区三区黑人孕妇 | 亚洲毛片在线观看 | 久久久久精 | 美国av片在线观看 | 91精品国产高清久久久久久久久 | 午夜精品一区二区三区三上悠亚 | 91亚洲精品久久久电影 | 精品一区二区不卡 | 日本午夜精品一区二区三区 | 国产激情视频网址 | 精品国产18久久久久久二百 | 日韩激情视频一区 |