成人免费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-09-06 16:52:17

SQL函數

2010-11-11 10:41:03

sql server遍

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-14 15:51:15

sql遍歷

2025-03-03 10:51:29

SQL數據庫MySQL

2010-11-24 13:11:06

MySQL遍歷數據表

2010-09-09 11:23:17

SQL函數格式

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-06 14:17:04

SQL函數

2010-09-10 15:51:51

SQL分析函數

2010-09-24 19:28:12

SQL CHARIND

2010-09-06 14:42:56

SQL函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费自拍 | 国产一级片网站 | 国产亚洲二区 | 91.com在线观看 | 自拍偷拍中文字幕 | 国产在线精品一区二区 | 国产一区二区麻豆 | 国产中文字幕网 | 欧美视频三区 | 天天干天天插天天 | 91色视频在线 | 国产精品色哟哟网站 | 精品久久久久久中文字幕 | 国产999精品久久久 精品三级在线观看 | 综合自拍 | www国产成人免费观看视频 | 久久精品在线免费视频 | 亚洲欧美日韩精品久久亚洲区 | 国产欧美日韩一区二区三区 | 国产成人精品免费 | 美国一级黄色片 | 免费黄色的视频 | 日本不卡一区 | 日本小视频网站 | 激情a| 91国内在线观看 | 男女免费观看在线爽爽爽视频 | 青青草社区 | 一区二区在线不卡 | 网色| 久久精品国产一区二区电影 | 国产精品99久久久久久久vr | 一区二区高清 | 91精品欧美久久久久久久 | av小说在线 | 欧美综合视频 | 欧美色综合一区二区三区 | 四虎永久免费影院 | 久久免费视频观看 | 国产精品一区二区免费 | 毛片综合 |