konhon

          忘掉過(guò)去,展望未來(lái)。找回自我,超越自我。
          逃避不一定躲的過(guò), 面對(duì)不一定最難過(guò), 孤單不一定不快樂(lè), 得到不一定能長(zhǎng)久, 失去不一定不再擁有, 可能因?yàn)槟硞€(gè)理由而傷心難過(guò), 但我卻能找個(gè)理由讓自己快樂(lè).

          Google

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks

          // 一個(gè)算物料計(jì)劃的存儲(chǔ)過(guò)程
          CREATE FUNCTION DBO.F_BomList
          (
                @PPartNo NVARCHAR(20),
                @PQuantity INT = 1,
                @PType BIT = 0
          )
          RETURNS @BomList TABLE(
             PartNo NVARCHAR(20),
             FUsage FLOAT,
             Raw_ID INT)
          AS 
          BEGIN
               DECLARE @BomListTmp TABLE(
                     CPartNo NVARCHAR(20),
                     PartNo NVARCHAR(20),
                     FUsage FLOAT,
                     _Level INT)
                --@Lev是層的定義
               DECLARE @LLevel INT, @LSample INT
               SET @LLevel  = 1
               SELECT @LSample = ISNULL(Sample, 1) FROM Bom WHERE CPartNo = @PPartNo
               IF @LSample = 0
                    SET @LSample = 1
               --先取@PPartNo的第一層數(shù)據(jù)到#Temp
               INSERT INTO @BomListTmp (CPartNo, PartNo, FUsage, _Level)
                               SELECT CPartNo, CPartNo, 1, @LLevel FROM Bom WHERE CPartNo = @PPartNo
               --以循環(huán)方式取得所有的下層元件清單到#Temp
               WHILE EXISTS(SELECT CPartNo FROM @BomListTmp WHERE _Level = @LLevel)
               BEGIN
                     SET @LLevel = @LLevel + 1
                     INSERT INTO @BomListTmp (CPartNo, PartNo, FUsage, _Level)
                                     SELECT a.CPartNo, a.PartNo,
                                     CASE WHEN @LLevel = 2 THEN  a.FUsage * b.FUsage / @LSample ELSE a.FUsage * b.FUsage END, @LLevel
                                     FROM BomDtl a, (SELECT PartNo, FUsage FROM @BomListTmp WHERE _Level + 1= @LLevel) b
                                     WHERE a.CPartNo = b.PartNo
               END
               -- 計(jì)算總量
               INSERT INTO @BomList(PartNo, FUsage, Raw_ID)
                      SELECT PartNo, SUM(FUsage) * @PQuantity FUsage, 0 FROM @BomListTmp WHERE _Level <> 1
                      GROUP BY PartNo
               IF @PType = 0
                     -- 標(biāo)識(shí)非原材料
                    UPDATE @BomList SET Raw_ID = 1
                          WHERE PartNo IN (SELECT DISTINCT CPartNo FROM BomDtl)
               RETURN
          End

           

          posted on 2005-09-08 06:09 konhon 優(yōu)華 閱讀(429) 評(píng)論(0)  編輯  收藏 所屬分類: MS SQL Server
          主站蜘蛛池模板: 临泽县| 大渡口区| 双柏县| 亚东县| 奉化市| 五家渠市| 林口县| 哈尔滨市| 开原市| 庆阳市| 宜兴市| 阿合奇县| 新兴县| 上犹县| 东辽县| 贵州省| 湖北省| 丘北县| 启东市| 黄冈市| 乐亭县| 太湖县| 宜宾县| 贡山| 沁阳市| 修文县| 祥云县| 南汇区| 松阳县| 遂昌县| 宿迁市| 珲春市| 林州市| 马鞍山市| 讷河市| 东乡| 沅江市| 德保县| 石狮市| 涞源县| 那曲县|