HOME   ·Î±×ÀΠ  ȸ¿ø°¡ÀÔ
    
ȸ¿ø°¡ÀÔ
ºñ¹Ð¹øÈ£ ã±â ÀÚµ¿·Î±ä
ÀÌÀü°Ô½ÃÆÇ
   free_board
   °Ç°­°Ô½ÃÆÇ
   ¿À¶óŬDB
   Linux
   HTML/javascript
   Áú¹®°ú ´ä
È£¼­±â
   À̹ÌÁö°Ô½ÃÆÇ  
   °Ç°­°Ô½ÃÆÇ  
   À½¾ÇÀÚ·á  
   ¼ºÁØÀÌ °Ô½ÃÆÇ  
[ÀϹÝ] over()ÇÔ¼ö¿¡ ´ëÇؼ­
  È£¼® ´Ô²²¼­ ¾´ ±ÛÀÔ´Ï´Ù - 121.¢½.39.7 ÀÐÀ½:3234  
ÀÌ ±Û¿¡ ´ëÇÑ ´ñ±ÛÀÌ ÃÑ 3°Ç ÀÖ½À´Ï´Ù.°á°úÅ×À̺í TC ¸¦ »ç¿ëÇÒ °æ¿ì

 

/* ÄÚµå/ÀÏÀÚº° Ãâ°í·® ÃßÃâ */
for c1 in ( select code, reqdate, reqqty
              from ta
             order by code, reqdate ) loop
   /* ÃßÃâÇÑ Ãâ°í·® */
   wk_reqqty := c1.reqqty;
  
   /* ÃßÃâÇÑ ÄÚµåÀÇ Ãâ°íÀÏÀÚ ÀÌÀü Ãâ°í·® °è»ê */
   select sum(reqqty) into wk_preqty
     from ta
    where code = c1.code
      and reqdate < c1.reqdate;
  
   /* ÃßÃâÇÑ Äڵ忡 ´ëÇÑ ÀÔ°í·® ÃßÃâ */
   for c2 in ( select code, inputdate, inventory
                 from tb
                where code = c1.code
                order by inputdate ) loop
      /* ÃßÃâÇÑ ÀÔ°í·® */
      wk_inventory := c2.inventory;     
     
      /* ÀÌÀü Ãâ°í·®°ú ÀÔ°í·® ºñ±³ */
      if (wk_preqty > 0) then
         if (wk_preqty >= wk_inventory) then
            wk_preqty    := wk_preqty - wk_inventory;
            wk_inventory := 0;
         else
            wk_inventory := wk_inventory - wk_preqty;
            wk_preqty := 0;
         end if;
      end if;
     
      /* ÀÌÀü Ãâ°í·® ¹Ý¿µ ÈÄ ÀÔ°í·®ÀÌ ³²Àº °æ¿ì Ãâ°í·® ¹Ý¿µ */
      if (wk_inventory > 0) then
         if (wk_inventory >= wk_reqqty) then
            insert into tc (reqdate, code, reqqty, inputdate, outqty)
            values (c1.reqdate, c1.code, c1.reqqty, c2.inputdate, wk_reqqty);
            exit;
         else
            insert into tc (reqdate, code, reqqty, inputdate, outqty)
            values (c1.reqdate, c1.code, c1.reqqty, c2.inputdate, wk_inventory);
            wk_reqqty := wk_reqqty - wk_inventory;
         end if;
      end if;
   end loop; /* end of for c2 */
end loop; /* end of for c1 */

 

select * from tc
 order by code, reqdate;

 

ÀÛ¾÷¿ë Å×À̺íÀ» »ç¿ëÇÏÁö ¾Ê°í ÇϳªÀÇ Äõ¸®·Î ÇØ°áÇÏ±æ ¿øÇϽŰǰ¡¿ä ?

´ÔÀÇ Äõ¸®µµ ¿Ã·ÁÁÖ¼¼¿ä ^^

ÀÓ¸í¼ø(a3sd)´ÔÀÌ 2005-10-17 20:20:49¿¡ ÀÛ¼ºÇÑ ´ñ±ÛÀÔ´Ï´Ù.
ÀÌ ´ñ±ÛÀº 2005-10-17 20:22:30¿¡ ¸¶Áö¸·À¸·Î ¼öÁ¤µÇ¾ú½À´Ï´Ù.SELECT   a.reqdate, a.code, a.reqqty, b.inputdate,
         (CASE
             WHEN a.bef >= b.bef AND a.bef < b.aft AND a.aft > b.aft
                THEN b.aft - a.bef
             WHEN a.aft > b.bef AND a.aft <= b.aft AND a.bef < b.bef
                THEN a.aft - b.bef
             WHEN a.bef < b.bef AND a.aft > b.aft
                THEN b.inventory
             WHEN a.bef >= b.bef AND a.aft <= b.aft
                THEN a.reqqty
          END
         ) outqty
    FROM (SELECT reqdate, code, reqqty,
                 NVL
                    (SUM (reqqty) OVER (PARTITION BY code ORDER BY code,
                      reqdate ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING),
                     0
                    ) bef,
                 SUM (reqqty) OVER (PARTITION BY code ORDER BY code,
                  reqdate) aft
            FROM ta) a,
         (SELECT inputdate, code, inventory,
                 NVL
                    (SUM (inventory) OVER (PARTITION BY code ORDER BY code,
                      inputdate ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING),
                     0
                    ) bef,
                 SUM (inventory) OVER (PARTITION BY code ORDER BY code,
                  inputdate) aft
            FROM tb) b
   WHERE a.code = b.code
     AND (   a.bef >= b.bef AND a.bef < b.aft AND a.aft > b.aft
          OR a.aft > b.bef AND a.aft <= b.aft AND a.bef < b.bef
          OR a.bef < b.bef AND a.aft > b.aft
          OR a.bef >= b.bef AND a.aft <= b.aft
         )
ORDER BY a.code, a.reqdate, b.inputdate

 

-- SQL Äõ¸® Áú¹®Àº SQL ±îÆä¿¡¼­... http://cafe.daum.net/oraclesqltuning


¸ñ·Ï

ºÐ·ù ¼±ÅÃ
108 ÀÏ¹Ý ¿À¶óŬ ÇÊ¿ä¾ø´Â Å×ÀÌºí ½ºÆäÀ̽º ¿ÀÇÁ¶óÀÎÈÄ »èÁ¦Çϱâ È£¼® 08-12-03 3377
107 ÀÏ¹Ý ¾ÆÄ«ÀÌºê ¹æ½ÄÀÇ ¹é¾÷¼­¹ö ±¸Ãà standby (3) È£¼® 08-11-12 3298
106 ÀÏ¹Ý ÆÄƼ¼Ç Å×ÀÌºí °ü¸® Çϱâ (ÂüÁ¶: idbzone.co.kr) È£¼® 08-10-28 3889
105 ÀÏ¹Ý php ÄÄÆÄÀϽÿ¡ ¿À¶óŬ oci È£Ãâ¿¡·¯¹ß»ý½Ã ÇØ°á¹æ¹ý È£¼® 08-10-23 3722
104 ÀÏ¹Ý analyze Å×À̺í - Äõ¸® ÃÖÀûÈ­ Çϱâ È£¼® 08-10-23 3730
103 ÀÏ¹Ý ¼¼¸¶Æ÷¾î 8 G ¼ÂÆà Çϱâ - shmmax is set to 8589934592 È£¼® 08-10-18 3379
102 ÀÏ¹Ý MySql -> Oracle º¯È¯ MySQL (1) È£¼® 08-10-09 5394
101 ÀÏ¹Ý »ç¿ëÇÏÁö ¾Ê´Â À妽º ã±â È£¼® 08-10-08 2828
100 ÀÏ¹Ý [Æ©´×] CPU¸¦ °úµµÇÏ°Ô Â÷ÁöÇÏ°í ÀÖ´Â SESSION°ú SQL¹® È£¼® 08-10-07 3190
99 ÀÏ¹Ý [sp] ÇÁ·Î½ÃÁ®¿¡¼­ ³ª¿Â Äõ¸®°á°ú¸¦ ¸®ÅÏÇÑ´Ù. È£¼® 08-09-05 3576
98 ÀÏ¹Ý over()ÇÔ¼ö¿¡ ´ëÇؼ­ È£¼® 08-07-30 4153
ÀÏ¹Ý    over()ÇÔ¼ö¿¡ ´ëÇؼ­ È£¼® 08-07-30 3235
97 ÀÏ¹Ý ¿À¶óŬ ÀÚµ¿À¸·Î ¾ÆÄ«À̺ê Àû¿ëÇϱâ (1) È£¼® 08-06-03 3284
96 ÀÏ¹Ý ¹é¾÷½ÃÁ¡±îÁö º¹±¸ È£¼® 08-06-03 3150
95 ÀÏ¹Ý [*] Å×À̺í ÄÚ¸àÆ®, È®ÀÎ (1) È£¼® 08-06-02 3360
óÀ½ÀÌÀü  [1] [2] 3 [4] [5] [6] [7] [8] [9] [10]  ´ÙÀ½¸Ç³¡

 
Copyright © zenos.pe.kr. All rights reserved.