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

sql函數遍歷BOM表的方法

數據庫 SQL Server
SQL函數可實現很多功能,下面為您介紹其中SQL函數遍歷BOM表的方法,供您參考,希望對您學SQL函數的使用能夠所有幫助。

SQL函數可以實現諸多的功能,下面就將為您介紹SQL函數遍歷BOM表的方法,供您參考,希望對您學SQL函數的使用能夠所有幫助。

表結構如下:
ptype subptype amount
a        a.1         20
a        a.2       15
a        a.3       10
a.    1 a.1.1    20
a.1   a.1.2     15
a.1    a.1.3   30
a.2    a.2.1   10
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

create table matgroup(parentgroup varchar(50),childgroup varchar(50), mount float)

insert into matgroup
select 'a',        'a.1',         20
union select 'a',        'a.2',       15
union select 'a',        'a.3',       10
union select 'a.1', 'a.1.1'   , 20
union select 'a.1',   'a.1.2',     15
union select 'a.1',    'a.1.3',   30
union select 'a.2',    'a.2.1',   10
union select 'a.2',    'a.2.2',    20
union select 'a.1.1', 'a.1.1.1', 45
union select 'a.1.1', 'a.1.1.2', 15
union select 'a.2.1' ,'a.2.1.1', 20
union select 'a.2.2', 'a.2.2.1', 13#p#

函數如下:
create FUNCTION fn_aaa (@matgroup varchar(50),@mount int )
RETURNS @retPLExpand TABLE (parentgroup varchar(50),childgroup varchar(50), mount float)

AS
BEGIN
   DECLARE @RowsAdded int
declare @PLExpand Table (parentgroup varchar(50),childgroup varchar(50), mount float,processed tinyint default(0))

INSERT @PLExpand
    SELECT b.parentgroup,b.childgroup, @mount*b.mount, 0
    FROM matgroup b
    WHERE b.parentgroup=@matgroup
   SET @RowsAdded = @@rowcount

   -- While new employees were added in the previous iteration

   WHILE @RowsAdded > 0

   BEGIN
      /*Mark all employee records whose direct reports are going to be
   found in this iteration with processed=1.*/
      UPDATE @PLExpand
      SET processed = 1
      WHERE processed = 0

      -- Insert employees who report to employees marked 1.
      INSERT @PLExpand
      SELECT a.parentgroup,a.childgroup,a.mount*b.mount , 0
      FROM matgroup a inner join @PLExpand b on a.parentgroup=b.childgroup
        where b.processed = 1

      SET @RowsAdded = @@rowcount
      /*Mark all employee records whose direct reports have been found
   in this iteration.*/

      UPDATE @PLExpand
      SET processed = 2
      WHERE processed = 1
   END#p#

-- copy to the result of the function the required columns
INSERT @retPLExpand
   SELECT parentgroup,childgroup,mount
   FROM @PLExpand

RETURN

END

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

 

【編輯推薦】

判斷閏年的SQL函數

巧用SQL函數讓公歷變農歷

詳解SQL中的DATALENGTH函數

基于時間SQL函數詳解

SQL中表變量的不足

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

2010-11-12 14:21:15

SQL函數

2010-11-11 10:41:03

sql server遍

2010-11-11 10:53:22

SQL Server遍

2010-11-12 14:10:15

SQL遍歷父子關系表

2010-11-24 13:11:06

MySQL遍歷數據表

2010-09-09 16:40:58

SQL循環游標

2010-09-06 16:52:17

SQL函數

2010-09-14 15:51:15

sql遍歷

2010-09-02 10:53:21

SQL刪除

2010-11-11 11:00:06

sql server遍

2010-09-28 10:53:53

SQL表結構

2010-09-14 11:45:16

Sql Server系

2010-09-16 16:35:31

sql server表

2010-09-10 16:02:13

SQLCHARINDEX函數

2010-11-10 14:35:17

SQL Server創

2010-11-11 14:36:11

SQL Server系

2010-10-19 16:20:32

SQL SERVER表

2010-09-27 10:04:30

Sql Update語

2010-09-02 11:34:51

SQL刪除

2010-09-01 16:47:18

SQL刪除
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美亚洲在线 | 亚洲精品乱码久久久久久蜜桃91 | 狠狠操婷婷 | 波多野结衣电影一区 | 精品国产一区二区三区在线观看 | 91在线电影| 亚洲免费在线观看 | 亚洲最大的黄色网址 | 国产激情视频在线免费观看 | 日韩免费成人av | 久久综合久色欧美综合狠狠 | 国产精品久久久久久久午夜片 | 国产精品成人一区二区三区夜夜夜 | 国产精品福利网站 | 午夜不卡一区二区 | 亚洲二区在线 | 日韩欧美亚洲 | 97国产在线视频 | 精品视频一区二区在线观看 | 最近中文字幕在线视频1 | 久久精品亚洲一区二区三区浴池 | 日韩av一区二区在线观看 | 午夜久久久 | 男人午夜视频 | 日韩精品成人网 | 欧美色综合网 | www.久草.com | 日韩在线免费播放 | 密室大逃脱第六季大神版在线观看 | 成人激情视频网 | 国产亚洲精品久久午夜玫瑰园 | 龙珠z在线观看 | 99精品免费在线观看 | 成人午夜影院 | 中文字幕 亚洲一区 | 久久久久久一区 | 日韩精品av一区二区三区 | 久久久久久蜜桃一区二区 | 午夜精品久久久久久久久久久久 | 91精品国产一区二区 | 精品久久久久久久久久久下田 |