偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

SQL函數(shù)可以實(shí)現(xiàn)諸多的功能,下面就將為您介紹SQL函數(shù)遍歷BOM表的方法,供您參考,希望對(duì)您學(xué)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ù)

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

SQL中表變量的不足

責(zé)任編輯:段燃 來(lái)源: 互聯(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)游標(biāo)

2010-09-14 15:51:15

sql遍歷

2010-11-11 11:00:06

sql server遍

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-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-10-22 16:48:49

SQL刪除所有表數(shù)據(jù)

2010-09-16 15:20:36

sql server表
點(diǎn)贊
收藏

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