自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

sql函數(shù)遍歷BOM表的方法

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

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

表結(jié)構(gòu)如下:
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#

函數(shù)如下:
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

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

 

【編輯推薦】

判斷閏年的SQL函數(shù)

巧用SQL函數(shù)讓公歷變農(nóng)歷

詳解SQL中的DATALENGTH函數(shù)

基于時間SQL函數(shù)詳解

SQL中表變量的不足

責任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-11-12 14:21:15

SQL函數(shù)

2010-11-11 10:41:03

sql server遍

2010-11-11 10:53:22

SQL Server遍

2010-11-12 14:10:15

SQL遍歷父子關(guān)系表

2010-11-24 13:11:06

MySQL遍歷數(shù)據(jù)表

2010-09-06 16:52:17

SQL函數(shù)

2010-09-09 16:40:58

SQL循環(huán)游標

2010-09-14 15:51:15

sql遍歷

2010-09-28 10:53:53

SQL表結(jié)構(gòu)

2010-09-16 16:35:31

sql server表

2010-09-14 11:45:16

Sql Server系

2010-11-11 11:00:06

sql server遍

2010-09-02 10:53:21

SQL刪除

2010-10-19 16:20:32

SQL SERVER表

2010-09-10 16:02:13

SQLCHARINDEX函數(shù)

2010-11-10 14:35:17

SQL Server創(chuàng)

2010-11-11 14:36:11

SQL Server系

2010-09-01 16:47:18

SQL刪除

2010-09-16 15:20:36

sql server表

2010-10-22 16:48:49

SQL刪除所有表數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號