HOME   ·Î±×ÀΠ  ȸ¿ø°¡ÀÔ
    
ȸ¿ø°¡ÀÔ
ºñ¹Ð¹øÈ£ ã±â ÀÚµ¿·Î±ä
ÀÌÀü°Ô½ÃÆÇ
   free_board
   °Ç°­°Ô½ÃÆÇ
   ¿À¶óŬDB
   Linux
   HTML/javascript
   Áú¹®°ú ´ä
È£¼­±â
   À̹ÌÁö°Ô½ÃÆÇ  
   °Ç°­°Ô½ÃÆÇ  
   À½¾ÇÀÚ·á  
   ¼ºÁØÀÌ °Ô½ÃÆÇ  
[ÀϹÝ] over()ÇÔ¼ö¿¡ ´ëÇؼ­
  È£¼® ´Ô²²¼­ ¾´ ±ÛÀÔ´Ï´Ù - 121.¢½.39.7 ÀÐÀ½:3290  
ÀÌ ±Û¿¡ ´ëÇÑ ´ñ±ÛÀÌ ÃÑ 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


¸ñ·Ï

ºÐ·ù ¼±ÅÃ
84 ÀÏ¹Ý ¿À¶óŬ 10G Åäµå¿¡¼­ DEBUG ±â´É»ç¿ëÇϱâ È£¼® 07-06-25 5156
85 ÀÏ¹Ý µ¿Àû SQL(Dynamic SQL)ÀÇ »ç¿ë¹æ¹ý È£¼® 07-06-28 5925
86 ÀÏ¹Ý ¿À¶óŬ Å×À̺í ÆÄƼ¼Å´× È£¼® 07-07-10 6241
87 ÀÏ¹Ý ¿À¶óŬ ÆÄƼ¼Ç Å×À̺í (Partitioned Table) È£¼® 07-07-10 9348
88 ÀÏ¹Ý ¼³Ä¡½Ç¼ö·Î ÀÎÇÑ ¿À¶óŬ À缳ġ °ü·Ã È£¼® 07-07-24 4357
89 ÀÏ¹Ý ¿À¶óŬ Å×À̺í ÆÄƼ¼Ç »ç¿ëÇϱâ È£¼® 07-07-25 5501
90 ÀÏ¹Ý ENTERPRISE EDITION µ¥ÀÌÅͺ£À̽º¸¦ STANDARD EDITIONÀ¸·Î º¯°æÇÏ´Â ¹ý È£¼® 07-07-25 4827
91 ÀÏ¹Ý ¿À¶óŬ 10gÀÇ Flashback ±â¼ú [recycle ±â´É] È£¼® 07-08-10 5741
92 ÀÏ¹Ý sqlplus¿¡¼­ º¯¼ö »ç¿ëÇÏ´Â ¹æ¹ý È£¼® 07-09-14 6519
93 ÀÏ¹Ý ¿À¶óŬ ¾Ïȣȭ ±¸Çö È£¼® 08-02-20 5726
94 ÀÏ¹Ý ¿À¶óŬ Áø¼öº¯È¯ ÆÐÅ°Áö ¼Ò½º ( 2 Áø¼ö ~ 36 Áø¼ö ) È£¼® 08-02-27 4952
95 ÀÏ¹Ý [*] Å×À̺í ÄÚ¸àÆ®, È®ÀÎ (1) È£¼® 08-06-02 3416
96 ÀÏ¹Ý ¹é¾÷½ÃÁ¡±îÁö º¹±¸ È£¼® 08-06-03 3208
97 ÀÏ¹Ý ¿À¶óŬ ÀÚµ¿À¸·Î ¾ÆÄ«À̺ê Àû¿ëÇϱâ (1) È£¼® 08-06-03 3345
ÀÏ¹Ý    over()ÇÔ¼ö¿¡ ´ëÇؼ­ È£¼® 08-07-30 3291
óÀ½ÀÌÀü  [1] [2] [3] [4] [5] [6] [7] 8 [9] [10]  ´ÙÀ½¸Ç³¡

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