13-4.ÇǺ¿

1.PIVOT

PIVOT ¿¬»êÀÚ´Â ÇàÀ¸·Î ³ª¿­µÇ¾î ÀÖ´Â µ¥ÀÌÅ͸¦ ¿­·Î ³ª¿­ÇÏ¿© º¸±â ½±°Ô °¡°øÇÑ´Ù. ½Ã°£¼øÀ¸·Î Â÷°îÂ÷°î ½×ÀÌ´Â °ªÀ̳ª ´ë±Ô¸ð ÀοøÀÇ Á¤º¸´Â ¼¼·Î·Î ±æ¾î ÇÑ´«¿¡ ¾Ë¾Æº¸±â ¾î·Æ´Ù. ½ºÅ©·ÑÇØ °¡¸ç ºÁ¾ß ÇÒ Á¤µµ·Î ¾çÀÌ ¸¹À¸¸é µ¿½Ã¿¡ µÎ °ªÀ» ºñ±³Çϱ⵵ ¾î·Æ´Ù. ÇǺ¿Àº ¼¼·ÎÇàÀ» °¡·Î¿­·Î ȸÀü½ÃÄÑ °¡µ¶¼ºÀ» Çâ»ó½ÃŲ´Ù.

¿øº» Å×ÀÌºí¿¡¼­ ƯÁ¤ ÇʵåÀÇ °ªÀ̾ú´ø 1¿ù, 2¿ù, 3¿ùÀÌ ÇǺ¿ Å×ÀÌºí¿¡´Â º°µµÀÇ ¿­·Î ³ªÅ¸³­´Ù. »Ó¸¸ ¾Æ´Ï¶ó 3¿ùó·³ Áߺ¹µÈ µ¥ÀÌÅÍ´Â Çϳª·Î ÇÕÃÄ Áý°èÇØ ÁØ´Ù. ÀÌ·± µ¿ÀÛÀÌ °¡´ÉÇÏ·Á¸é ȸÀüÇÒ Çʵå, °ªÀÇ Á¾·ù, Áߺ¹½Ã Áý°è ¹æ¹ý µîÀÇ »ó¼¼ÇÑ ÁöÁ¤ÀÌ ÇÊ¿äÇÏ´Ù.

PIVOTÀº ±¸¹®ÀÌ º¹ÀâÇÏ°í ȸÀü °á°ú°¡ Á÷°üÀûÀÌÁö ¾Ê¾Æ °á°ú¸¦ ºÁµµ µ¿ÀÛÀ» ÀÌÇØÇϱ⠽±Áö ¾Ê´Ù. ¹Ýµå½Ã ½Ç½ÀÀ» ÅëÇØ ½ÇÇà °úÁ¤À» ºÐ¼®ÇÏ°í ¿¬±¸ÇØ ºÁ¾ß ÇÑ´Ù. ÀÌ·± ±â´ÉÀÌ ¿Ö ÇÊ¿äÇÏ°í ¾î¶² À¯¿ë¼ºÀÌ ÀÖ´ÂÁö ´Ü¼øÇÑ Å×À̺íºÎÅÍ ´Ü°èÀûÀ¸·Î ½ÇÇàÇØ º¸ÀÚ.

 

CREATE TABLE tSeason

(

     item VARCHAR(10),

     season VARCHAR(10),

     sale INT

);

 

INSERT INTO tSeason VALUES ('³Ã¸é', 'º½', 20);

INSERT INTO tSeason VALUES ('³Ã¸é', '¿©¸§', 50);

INSERT INTO tSeason VALUES ('³Ã¸é', '°¡À»', 30);

INSERT INTO tSeason VALUES ('³Ã¸é', '°Ü¿ï', 10);

INSERT INTO tSeason VALUES ('«»Í', 'º½', 30);

INSERT INTO tSeason VALUES ('«»Í', '¿©¸§', 10);

INSERT INTO tSeason VALUES ('«»Í', '°¡À»', 20);

INSERT INTO tSeason VALUES ('«»Í', '°Ü¿ï', 40);

µÎ °³ÀÇ »óÇ°¿¡ ´ëÇØ °èÀýº° ÆǸŷ®À» ±â·ÏÇÑ Å×À̺íÀÌ´Ù. ÆǸŷ®ÀÌ ¼öÁ÷À¸·Î ³ª¿­µÇ¾î ÀÖ¾î ÇÑ´«¿¡ º¸ÀÌÁö ¾Ê°í »óÇ°°£À̳ª °èÀýº° ºñ±³°¡ ½±Áö ¾Ê´Ù. ¿©¸§Ã¶ ³Ã¸é°ú «»ÍÀÇ ¸ÅÃâÀ» ºñ±³ÇÏ·Á¸é ¾Æ·¡ À§·Î ½Ã¼±À» ¿Å°Ü °¡¸ç ºÁ¾ß ÇÑ´Ù. »óÇ°ÀÌ 10°³ Á¤µµ µÇ°í °èÀýº°ÀÌ ¾Æ´Ñ ¿ùº°·Î ÆǸŷ®À» ±â·ÏÇØ ³õ¾Ò´Ù¸é À°¾ÈÀ¸·Î ÆľÇÇϱ⠽±Áö ¾Ê´Ù.

¼¼·Î Ãà¿¡ »óÇ°À» Àû°í °¡·Î Ãà¿¡ °èÀýÀ» ÀûÀº ÈÄ µÎ ÃàÀÌ ¸¸³ª´Â Ä­¿¡ ÆǸŷ®À» Àû¾î °£·«ÇÑ Ç¥ ÇüÅ·Π°¡°øÇÏ¸é ´«¿¡ ½ï µé¾î¿Â´Ù. ÀÌ·± ½ÄÀ¸·Î µ¥ÀÌÅÍÀÇ ÇüŸ¦ º¯ÇüÇÏ´Â ¸í·ÉÀÌ PIVOTÀÌ´Ù. Àüü Çü½ÄÀº ±²ÀåÈ÷ º¹ÀâÇÏÁö¸¸ °£´ÜÇÏ°Ô ¿ä¾àÇÏ¸é ´ÙÀ½°ú °°´Ù.

 

SELECT Çʵå¸ñ·Ï FROM Å×À̺í

PIVOT(Áý°èÇÔ¼ö FOR ´ë»óÇʵå IN (Çʵ尪 ¸ñ·Ï)) º°¸í

 

´ë»ó ÇʵåÀÇ °ª ¸ñ·ÏÀ» »õ·Î¿î ¿­·Î ¸¸µé°í °¢ ¿­¿¡ ´ëÇØ Áý°è ÇÔ¼ö¸¦ È£ÃâÇÏ¿© °á°ú¼ÂÀ» ¸¸µç´Ù. ½ÇÁ¦ µ¿ÀÛÀ» º¸±â Àü¿¡´Â ÀÌÇØÇϱ⠽±Áö ¾ÊÀºµ¥ ´ÙÀ½ Äõ¸®¸¦ ½ÇÇàÇØ º¸ÀÚ.

 

SELECT * FROM tSeason

PIVOT (MAX(sale) FOR season IN ('º½', '¿©¸§', '°¡À»', '°Ü¿ï'));

tSeason Å×À̺íÀÇ season ¿­¿¡ ÀÖ´Â º½, ¿©¸§, °¡À», °Ü¿ï °èÀý¸íÀ» °¢°¢ÀÇ ¿­·Î ¸¸µé¾î °¡·Î·Î ³ª¿­ÇÏ°í »óÇ°º° ÆǸŷ®À» MAX Áý°è ÇÔ¼ö·Î ±¸ÇØ ±× ¿­ÀÇ °ªÀ¸·Î Ãâ·ÂÇÑ´Ù. °èÀýÀÌ »õ·Î¿î Çʵ尡 µÇ´Âµ¥ ÇѱÛÀ» Çʵå¸íÀ¸·Î ¾µ ¼ö ¾ø¾î Çʵ尪À» µû¿ÈÇ¥·Î °¨½Î¾ß ÇÑ´Ù.

°èÀýº° ÆǸŷ®À» ÇÑ´«¿¡ ¾Ë¾Æº¼ ¼ö ÀÖ°í »óÇ° °£ÀÇ ºñ±³µµ ½±´Ù. ¼¼·Î·Î ³ª¿­µÈ 4°èÀýÀ» °¡·Î·Î µ¹·Á 2ÇàÀ¸·Î ¾ÐÃàÇßÁö¸¸ °ªÀº ¿©ÀüÈ÷ 2Çà 4¿­·Î 8°³ÀÌ´Ù. À§Ä¡¸¸ ¹Ù²î¾úÀ» »Ó ³»¿ëÀº º¯ÇÔ¾øÀ¸¸ç ¶È°°Àº µ¥ÀÌÅ͸¦ º¸±â ÁÁ°Ô °¡°øÇÑ´Ù. ±¸¹®ÀÌ Á¶±Ý º¹ÀâÇѵ¥ ±×¸²À¸·Î Ç®¾î º¸¸é ´ÙÀ½°ú °°´Ù.

¿øº» Å×À̺íÀÇ season ¿­¿¡ º½, ¿©¸§, °¡À», °Ü¿ï µîÀÇ °ªÀÌ µé¾î ÀÖ´Ù. ÀÌ °¢°¢ÀÇ °ªÀ» »õ·Î¿î ¿­·Î Á¤ÀÇÇÏ°í °¢ ¿­¿¡´Â sale¿­ÀÇ ÃÖ´ë°ªÀ» ±¸ÇØ Ç¥½ÃÇÑ´Ù. season ¿­ÀÇ ¼¼·Î¿¡ ÀÖ´ø °èÀý¸íÀÌ °¡·Î ÇàÀ¸·Î ȸÀüÇÏ¿© °¢°¢ÀÇ ¿­ÀÌ µÈ´Ù.

IN Àý¿¡ ¸ðµç Çʵ尪À» ´Ù ³ª¿­ÇØ¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ȸÀü½Ãų °ª¸¸ ³ª¿­ÇÏ¸é ³ª¸ÓÁö´Â ÇǺ¿ ´ë»ó¿¡¼­ Á¦¿ÜÇÏ¸ç ¼ø¼­µµ ¸¶À½´ë·Î º¯°æÇÒ ¼ö ÀÖ´Ù. °èÀýº° ÆǸŷ®¿¡¼­ °Ü¿ïÀ» »© º¸°í ¼ø¼­µµ ¹Ù²ã º¸ÀÚ.

 

SELECT * FROM tSeason

PIVOT (MAX(sale) FOR season IN ('¿©¸§', 'º½', '°¡À»'));

¿©¸§, º½, °¡À»¿¡ ´ëÇÑ ÆǸŷ®¸¸ ³ªÅ¸³ª¸ç °Ü¿ïÀº Åë°è¿¡¼­ Á¦¿ÜÇÑ´Ù. ´ë»ó Çʵå¿Í °ª ¸ñ·ÏÀ» º¯°æÇÏ¸é ´Ù¸¥ ¹æ½ÄÀ¸·Î ȸÀüÇÒ ¼öµµ ÀÖ´Ù. °èÀý¸íÀ¸·Î ÇǺ¿ÇÏ´Â ´ë½Å »óÇ°¸íÀ¸·Î ÇǺ¿ÇØ º¸ÀÚ. FORÀÇ Ä÷³¸íÀ» itemÀ¸·Î º¯°æÇÏ°í INÀÇ °ª Á¾·ù¸¦ ³Ã¸é°ú «»ÍÀ¸·Î ¹Ù²Û´Ù.

 

SELECT * FROM tSeason

PIVOT (MAX(sale) FOR item IN ('³Ã¸é', '«»Í'))

item¿­¿¡ ÀÖ´ø ³Ã¸é°ú «»ÍÀÌ °¡·Î¿­·Î À̵¿ÇÏ¿© »óÇ°º° ÆǸŷ®À» Ãâ·ÂÇÑ´Ù. ¹» ȸÀü½ÃÅ°´Â°¡¿¡ µû¶ó µµÇ¥ÀÇ ¸ð¾çÀÌ ´Þ¶óÁø´Ù. 2°³ÀÇ »óÇ°À» °¡·Î·Î µ¹¸®°í °èÀýº°·Î ÇàÀ» ±¸¼ºÇϸé 4Çà 2¿­ÀÌ µÇ¸ç °ªÀº ¿©ÀüÈ÷ 8°³ÀÌ´Ù. º¸¿©ÁÖ´Â ¹æ½Ä¸¸ ´Ù¸¦ »Ó °á±¹Àº ¶È°°Àº Á¤º¸¸¦ Ç¥ÇöÇÑ´Ù.

´ëÃæ ¾î¶² ½ÄÀ¸·Î µ¿ÀÛÇÑ´Ù´Â °ÍÀº ¾Ë ¼ö ÀÖÁö¸¸ ¿ª½Ã ½±Áö ¾Ê´Ù. ÇǺ¿ ±â´ÉÀÌ µµÀԵDZâ Àü¿¡´Â UNION, GROUP BY, CASE µîÀÇ ±¸¹®À» Ãѵ¿¿øÇؼ­ ¼ø¼­´ë·Î Á¶ÇÕÇØ¾ß ±¸ÇöÇÒ ¼ö ÀÖ¾ú´Ù. ÀÌ·± º¹ÀâÇÑ µ¿ÀÛÀ» ´Ü ÇÑ ÁÙ·Î ¾ÐÃàÇؼ­ Ç¥ÇöÇÏ´Ï ¾î·Á¿ï ¼ö¹Û¿¡ ¾ø´Ù.

 

ȣȯ¼º üũ

PIVOTÀº SQL Ç¥ÁØÀ̾ ¾çÂÊ ´Ù Àß Áö¿øÇÏÁö¸¸ ¸î °¡Áö Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. MariaDB´Â ¾ÆÁ÷ ÇǺ¿À» Áö¿øÇÏÁö ¾Ê´Â´Ù. ¶È°°Àº ¸í·ÉÀ» SQL Server¿¡¼­ ÀÛ¼ºÇÏ¸é ´ÙÀ½°ú °°´Ù.

 

SELECT * FROM tSeason

PIVOT (MAX(sale) FOR season IN (º½, ¿©¸§, °¡À», °Ü¿ï)) pvt;

 

¿À¶óŬ¿¡ ºñÇØ µÎ °¡Áö Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. ¨ç ÇǺ¿ °á°ú Å×ÀÌºí¿¡ pvt º°¸íÀ» ºÙ¿´´Ù. Å×ÀÌºí º°¸íÀº ÀÌÈÄÀÇ ÂüÁ¶¸¦ À§ÇØ ÇÊ¿äÇÏ´Ù. ¿À¶óŬÀº º°¸íÀÌ ¿É¼ÇÀÌÁö¸¸ SQL Server´Â ´çÀå ¾²Áö ¾Ê´õ¶óµµ º°¸íÀÌ ÇʼöÀÌ´Ù. Ç×»ó º°¸íÀ» ºÙÀ̸é ȣȯ¼ºÀ» È®º¸ÇÒ ¼ö ÀÖ´Ù.

¨è INÀýÀÇ °ª ¸ñ·ÏÀ» µû¿ÈÇ¥·Î °¨½ÎÁö ¾ÊÀ¸¸ç Çѱ۵µ ±×³É ¾²¸é µÈ´Ù. ¾îÂ÷ÇÇ Çѱ۵µ Çʵå¸íÀ¸·Î ÀûÇÕÇÑ ¹®ÀÚ¿©¼­ ±»ÀÌ ¹®ÀÚ¿­·Î ¸¸µéÁö ¾Ê¾Æµµ µÈ´Ù. ¿À¶óŬÀº °ª ¸ñ·ÏÀ» µû¿ÈÇ¥·Î °¨½Î±â ¶§¹®¿¡ °á°ú¼ÂÀÇ Çʵå¸í¿¡µµ µû¿ÈÇ¥°¡ ³ªÅ¸³­´Ù. Á¤ µû¿ÈÇ¥¸¦ ¾ø¾Ö·Á¸é °ª ¸ñ·Ï¿¡ º°¸íÀ» ÁÖ¸é µÈ´Ù.

 

SELECT * FROM tSeason

PIVOT (MAX(sale) FOR season IN ('º½' AS º½, '¿©¸§' AS ¿©¸§, '°¡À»' AS °¡À», '°Ü¿ï' AS °Ü¿ï)) pvt;

ÀÌÈÄÀÇ ½Ç½ÀÀº ¿À¶óŬÀ» ±âÁØÀ¸·Î Ç쵂 º°¸í pvt´Â ÀÌÈÄÀÇ ÂüÁ¶¸¦ À§ÇØ Ç×»ó ºÙÀ̱â·Î ÇÑ´Ù. °ª ¸ñ·ÏÀº µû¿ÈÇ¥·Î °¨½ÎµÇ SQL Server¿¡¼­ ½ÇÇàÇÒ ¶§´Â µû¿ÈÇ¥¸¸ Á¦°ÅÇÏ¸é µÈ´Ù. ±× ¿ÜÀÇ ´Ù¸¥ ¹®¹ýÀº ¸ðµÎ °°¾Æ ÀÌÈÄÀÇ ¿¹Á¦´Â SQL Server¿¡¼­µµ ¹®Á¦¾øÀÌ µ¿ÀÛÇÑ´Ù.

2.ÇǺ¿ Áý°è

PIVOTÀÇ FOR ÀýÀº ´ë»ó Ä÷³, IN ÀýÀº ±× Ä÷³¿¡¼­ ¿­·Î ¸¸µé °ªÀÇ ¸ñ·ÏÀÌ´Ù. ±×·¸´Ù¸é Áý°è ÇÔ¼öÀÇ ¿ªÇÒÀº ¹»±î? ÀÌ ±¸¹®Àº ȸÀüÇÑ ÈÄ °¢ Ä­¿¡ ¾µ °ªÀ» ÁöÁ¤Çϴµ¥ À§ ¿¹¿¡¼­´Â ÆǸŷ®À» Ç¥½ÃÇÏ´Â °ÍÀÌ ÀûÇÕÇÏ´Ù. ±×·¯³ª ±×³É saleÀ̶ó°í ÀûÀ¸¸é ¿¡·¯ÀÌ´Ù.

 

SELECT * FROM tSeason

PIVOT (sale FOR season IN ('º½', '¿©¸§', '°¡À»', '°Ü¿ï')) pvt;

 

¿øº» Å×ÀÌºí¿¡ ¸ðµç sale °ªÀÌ ÀÖ´Ù°í º¸ÀåÇÒ ¼ö ¾ø°í ¶Ç ¹Ýµå½Ã Çϳª¸¸ ÀÖ´Â °Íµµ ¾Æ´Ï´Ù. tSeason Å×À̺íÀº »óÇ°º°, °èÀýº°·Î ÆǸŷ®ÀÌ µü Çϳª¾¿ µé¾î ÀÖÁö¸¸ Åë°è¶õ ´©¶ôµÉ ¼öµµ ÀÖ°í °°Àº °ªÀ» ¿©·¯ ¹ø ÀûÀ» ¼öµµ ÀÖ´Ù. ¿ÀÈ÷·Á ±×·± °æ¿ì°¡ ´õ ÀϹÝÀûÀÌ´Ù.

±×·¡¼­ Áߺ¹ ÆǸŷ®À» Áý°èÇÒ ¹æ¹ýÀ» ÁöÁ¤ÇØ¾ß ÇÑ´Ù. À§ ¿¹¿¡¼­´Â MAX¸¦ »ç¿ëÇߴµ¥ AVG³ª SUM, MINÀ» »ç¿ëÇصµ °á°ú´Â °°´Ù. ÇϳªÀÇ ´ÜÀÏ°ª¿¡ ´ëÇØ Çհ質 Ãִ볪 ÃÖ¼Ò³ª Æò±ÕÀ̳ª ¹» ±¸Çصµ ¶È°°Àº °ªÀÌ ³ª¿Ã ¼ö¹Û¿¡ ¾ø´Ù.

 

SELECT * FROM tSeason

PIVOT (SUM(sale) FOR season IN ('º½', '¿©¸§', '°¡À»', '°Ü¿ï')) pvt;

 

±×·¯³ª Áߺ¹À̳ª ´©¶ôÀÌ ÀÖÀ» °æ¿ì¿¡´Â Áý°è ÇÔ¼ö¿¡ µû¶ó °á°ú°¡ ´Þ¶óÁø´Ù. ÀÌ·± °æ¿ì¸¦ Å×½ºÆ®ÇØ º¸±â À§ÇØ µ¥ÀÌÅ͸¦ º¯°æÇÑ Å×À̺íÀ» »õ·Î ¸¸µé¾î º¸ÀÚ. ¶È°°Àº ±¸Á¶·Î tSeason2 Å×À̺íÀ» ¸¸µé°í ´ÙÀ½ µ¥ÀÌÅ͸¦ ä¿ö ³Ö´Â´Ù.

 

INSERT INTO tSeason2 VALUES ('³Ã¸é', 'º½', 20);

INSERT INTO tSeason2 VALUES ('³Ã¸é', '¿©¸§', 50);

INSERT INTO tSeason2 VALUES ('³Ã¸é', '°¡À»', 30);

INSERT INTO tSeason2 VALUES ('«»Í', 'º½', 30);

INSERT INTO tSeason2 VALUES ('«»Í', '°¡À»', 20);

INSERT INTO tSeason2 VALUES ('«»Í', '°Ü¿ï', 40);

INSERT INTO tSeason2 VALUES ('«»Í', '°Ü¿ï', 30);

 

¾öµ¿¼³ÇÑ¿¡ ³Ã¸éÀ» Áñ±â´Â »ç¶÷Àº µå¹°°í ¿©¸§¿¡ ¶ß°Å¿î «»ÍÀº ÀαⰡ ¾ø´Ù. °Ô´Ù°¡ «»ÍÀÇ °Ü¿ï ÆǸŷ®ÀÌ µÎ ¹ø ±â·ÏµÇ¾î ÀÖ´Ù. ÀÌ·± Åë°è°¡ ´õ Çö½ÇÀûÀÌ´Ù. °èÀýº°·Î ÇǺ¿Ç쵂 Áý°è ÇÔ¼ö¸¦ MAX¿Í SUMÀ¸·Î ÁöÁ¤ÇØ º¸ÀÚ.

 

SELECT * FROM tSeason2 PIVOT (MAX(sale) FOR season IN ('º½', '¿©¸§', '°¡À»', '°Ü¿ï')) pvt;

SELECT * FROM tSeason2 PIVOT (SUM(sale) FOR season IN ('º½', '¿©¸§', '°¡À»', '°Ü¿ï')) pvt;

 

ÆǸŷ®ÀÌ Çϳª ¶Ç´Â ¾ø´Â »óÇ°Àº ¾î¶² Áý°è ÇÔ¼ö¸¦ ¾²³ª Â÷ÀÌ°¡ ¾øÁö¸¸ °Ü¿ï ÆǸŷ®ÀÌ 40, 30À¸·Î µÎ ¹ø ±â·ÏµÇ¾î Àִ «»ÍÀÇ °æ¿ì´Â ´Ù¸£´Ù. MAX´Â ÃÖ´ë°ªÀÎ 40À» Ãâ·ÂÇÏ°í SUMÀº µÎ °ªÀ» ´õÇÑ 70À» Ãâ·ÂÇÑ´Ù. MIN Áý°è ÇÔ¼ö¸¦ ¾²¸é 30À¸·Î ³ª¿À¸ç AVG Áý°è ÇÔ¼ö¸¦ ¾²¸é 35°¡ µÈ´Ù. COUNT¸¦ ¾²¸é ÆǸŷ®ÀÌ ¾Æ´Ñ Åë°èÀÇ °³¼ö¸¦ Ãâ·ÂÇÑ´Ù.

 

SELECT * FROM tSeason2 PIVOT (COUNT(sale) FOR season IN ('º½', '¿©¸§', '°¡À»', '°Ü¿ï')) pvt;

Á¤º¸°¡ ¾øÀ¸¸é 0À¸·Î Ç¥½ÃÇÏ°í «»ÍÀÇ °Ü¿ï ÆǸŷ® Á¤º¸´Â 2°³ ÀÖ´Ù°í Ç¥½ÃÇÑ´Ù. tSeason, tSeason2 Å×À̺íÀ» ÅëÇØ ½Ç½ÀÀ» ¹Ýº¹ÇÏ¿© Áý°è ÇÔ¼ö, FOR, IN °¢ ÀýÀÇ ¿ªÇÒ°ú Àǹ̿¡ ´ëÇØ Á¤È®ÇÏ°Ô Á¤¸®ÇÏ°í ³Ñ¾î°¡ÀÚ. ±âº» ±¸¹®À» È®½ÇÈ÷ ÀÌÇØÇØ¾ß ÀÌÈÄÀÇ ¹®¹ýÀÌ Çò°¥¸®Áö ¾Ê´Â´Ù.

3.Åë°è ÇÊµå ¼±ÅÃ

¾Õ¿¡¼­ »ç¿ëÇÑ ¿¹Á¦ Å×À̺íÀº ÇǺ¿ÀÇ ±âº» µ¿ÀÛÀ» Á÷°üÀûÀ¸·Î ¼³¸íÇϱâ À§ÇØ ÃÖ¼ÒÇÑÀÇ Çʵ常 Æ÷ÇÔÇß´Ù. Çö½ÇÀûÀÎ Åë°è Å×À̺íÀº ÇÊµå ¼ö°¡ ´õ ¸¹°í ¿©·¯ °¡Áö °ªÀÌ ¸¶±¸ ¼¯¿© ÀÖ¾î °Å´ëÇÏ´Ù. ÀÌ·² °æ¿ì ²À ÇÊ¿äÇÑ Çʵ常 °ñ¶ó Åë°è¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ¿¬±¸ÇØ º¸ÀÚ. ´ÙÀ½ »ùÇà Å×À̺íÀ» ¸¸µç´Ù.

 

CREATE TABLE tTraffic

(

     line VARCHAR(10),

     hour INT,

     car VARCHAR(20),

     traffic INT

);

 

INSERT INTO tTraffic VALUES ('°æºÎ', 1, '½Â¿ëÂ÷', 40);

INSERT INTO tTraffic VALUES ('°æºÎ', 2, '½Â¿ëÂ÷', 41);

INSERT INTO tTraffic VALUES ('°æºÎ', 3, '½Â¿ëÂ÷', 42);

INSERT INTO tTraffic VALUES ('°æºÎ', 1, 'Æ®·°', 30);

INSERT INTO tTraffic VALUES ('°æºÎ', 3, 'Æ®·°', 32);

INSERT INTO tTraffic VALUES ('È£³²', 1, '½Â¿ëÂ÷', 20);

INSERT INTO tTraffic VALUES ('È£³²', 2, '½Â¿ëÂ÷', 10);

INSERT INTO tTraffic VALUES ('È£³²', 2, '½Â¿ëÂ÷', 11);

INSERT INTO tTraffic VALUES ('È£³²', 3, '½Â¿ëÂ÷', 22);

INSERT INTO tTraffic VALUES ('È£³²', 1, 'Æ®·°', 10);

INSERT INTO tTraffic VALUES ('È£³²', 2, 'Æ®·°', 11);

INSERT INTO tTraffic VALUES ('È£³²', 3, 'Æ®·°', 12);

 

ÀÌ Å×À̺íÀº µµ·Îº°, ½Ã°£º°, Â÷Á¾º° ÅëÇà·®À» ÀúÀåÇÑ´Ù. ¿©·¯ ±âÁØÀ¸·Î Åë°è¸¦ ³» º¸±â À§ÇØ °æºÎ¼±Àº 2½ÃÀÇ Æ®·° ÅëÇà·®ÀÌ ¾ø°í È£³²¼±Àº 2½ÃÀÇ ½Â¿ëÂ÷ ÅëÇà·®À» Áߺ¹ÇØ µÎ¾ú´Ù. car Çʵ忡 ÀÖ´Â ½Â¿ëÂ÷, Æ®·°°ªÀ» ȸÀüÇÏ°í ÅëÇà·®ÀÇ ÃÑÇÕÀ» ±¸ÇØ Â÷Á¾º°·Î ÇǺ¿ÇØ º¸ÀÚ.

 

SELECT * FROM tTraffic PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷', 'Æ®·°')) pvt;

PIVOT ¿¬»êÀÚ´Â ´ë»ó Å×À̺íÀÇ ¸ðµç Ä÷³Áß ÇǺ¿ ´ë»ó Ä÷³¸¸ »©°í GROUP BY ¿¬»êÀ» ¼öÇàÇÑ´Ù. tTrafficÀÇ 4°³ Çʵå Áß ÇǺ¿ ´ë»óÀÎ car¿Í Áý°è ´ë»óÀÎ trafficÀ» Á¦¿ÜÇÑ line, hour¿¡ ´ëÇØ ±×·ìÇΠó¸®ÇÑ´Ù. ±×·¡¼­ Áý°è ÇÔ¼ö°¡ ÇʼöÀûÀÌ´Ù.

¿øº»¿¡ Áߺ¹°ªÀÌ Á¸ÀçÇÒ ¼ö ÀÖ¾î ¾î¶² ¹æ¹ýÀ¸·Îµç ÇÕÃÄ¾ß ÇÏ¸ç ±× ¹æ¹ýÀ» Áý°è ÇÔ¼ö°¡ °áÁ¤ÇÑ´Ù. À§ ÇǺ¿Àº SUM Áý°è ÇÔ¼ö¸¦ »ç¿ëÇßÀ¸¸ç ±×·¡¼­ È£³²¼± 2½Ã ½Â¿ëÂ÷ ÅëÇà·®À» ÇÕÃÄ 21·Î Ç¥½ÃÇÑ´Ù. ÃÖ´ë ÅëÇà·®À» »ÌÀ¸·Á¸é MAX¸¦ ¾²°í Æò±Õ ÅëÇà·®À» ±¸ÇÏ·Á¸é AVG¸¦ ¾²¸é µÈ´Ù.

´ÙÀ½Àº µµ·Î¸íÀ̳ª ½Ã°£À» ±âÁØÀ¸·Î ÇǺ¿ÇØ º¸ÀÚ. FOR¿¡ ¿øÇÏ´Â ±âÁØ Çʵ带 Àû°í IN¿¡ ´ë»ó Çʵ尪À» ³ª¿­ÇÑ´Ù. µµ·Îº° Åë°è¸¦ »ÌÀ¸·Á¸é FOR Àý¿¡ lineÀ» Àû°í IN Àý¿¡ lineÀÇ °ªÀÎ °æºÎ, È£³²À» Àû´Â´Ù. ½Ã°£º° Åë°è¸¦ »ÌÀ» ¶§´Â FOR Àý¿¡ hour¸¦ Àû°í IN Àý¿¡ 1, 2, 3 ½Ã°£À» Àû´Â´Ù.

 

SELECT * FROM tTraffic PIVOT (SUM(traffic) FOR line IN ('°æºÎ', 'È£³²')) pvt;

SELECT * FROM tTraffic PIVOT (SUM(traffic) FOR hour IN ('1', '2', '3')) pvt;

 

1, 2, 3Àº ¼ýÀÚ¿©¼­ µû¿ÈÇ¥ ¾øÀÌ ±×³É »ç¿ëÇصµ »ó°ü¾ø´Ù. SQL Server´Â ¼ýÀÚ¸¦ ¸íĪÀ¸·Î ÀÎÁ¤ÇÏÁö ¾Ê¾Æ [1], [2], [3] ½ÄÀ¸·Î °ýÈ£¸¦ °¨½Î¾ß ÇÑ´Ù. °¡·Î ÇǺ¿¿­ÀÌ ´Ã¾î³ª¸é ¼¼·Î Çà ¼ö´Â ÁÙ¾îµç´Ù. 12°³ÀÇ °ªÀ» µµ·Î¸í 2Á¾·ù·Î ÇǺ¿Çϸé 6Çà, ½Ã°£º° 3Á¾·ù·Î ÇǺ¿Çϸé 4ÇàÀÌ´Ù.

ÀÌ ¿¹¿¡¼­ º¸´Ù½ÃÇÇ Åë°è ±âÁØÀÌ ¿©·¯ °³ÀÎ Å×À̺íÀº ¿øÇÏ´Â ±âÁØÀ¸·Î Åë°è¸¦ ÀÚÀ¯·Ó°Ô ¸¸µé ¼ö ÀÖ´Ù. Â÷Á¾À¸·Î ÇǺ¿ÇÏ¸é µµ·Îº°, ½Ã°£º° Åë°è¸¦ »Ì°í µµ·Î¸¦ ±âÁØÀ¸·Î ÇǺ¿ÇÏ¸é ½Ã°£º°, Â÷Á¾º° Åë°è¸¦ »êÃâÇÏ°í ½Ã°£À¸·Î ÇǺ¿ÇÏ¸é µµ·Îº°, Â÷Á¾º° Åë°è¸¦ ¸¸µç´Ù.

ÇǺ¿ ´ë»ó¸¸ »©°í ³²Àº Çʵ带 ¸ðµÎ ±×·ìÇÎÇÑ´Ù. ±×·¸´Ù¸é ÀϺθ¦ ±×·ìÇο¡¼­ Á¦¿ÜÇÏ·Á¸é ¾î¶»°Ô ÇÒ±î? ¿¹¸¦ µé¾î Â÷Á¾À¸·Î ÇǺ¿Ç쵂 ½Ã°£Àº ¹«½ÃÇÏ°í µµ·Îº° ÅëÇà·®¸¸ ±¸ÇÏ°í ½Í´Ù°í ÇÏÀÚ. ÇǺ¿ ´ë»ó Å×À̺íÀÇ ÇÊµå ¸ñ·Ï¿¡ * ´ë½Å ½Ã°£ Çʵ带 »ý·«ÇÏ°í ³ª¸ÓÁö Çʵ常 ÀûÀ¸¸é µÉ °Å °°´Ù.

 

SELECT line, car, traffic FROM tTraffic

PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷', 'Æ®·°')) pvt;

 

Â÷Á¾º°·Î ÇǺ¿ÇÏ¿© ÅëÇà·®À» Áý°èÇ쵂 lineÀ¸·Î¸¸ ±×·ìÇÎÇ϶ó´Â ¶æÀÌ´Ù. car¿Í trafficÀº ÇǺ¿ ´ë»óÀÌ¸ç ³²Àº Çʵå´Â line¹Û¿¡ ¾øÀ¸´Ï µµ·Îº°·Î¸¸ ±×·ìÇÎÇ϶ó´Â ¸í·ÉÀÌ´Ù. °æºÎ, È£³²¼±¿¡ ½Â¿ëÂ÷¿Í Æ®·°ÀÌ °¢°¢ ¸î ´ë³ª ÅëÇàÇß´ÂÁö¸¸ ¾Ë°í ½ÍÀº °ÍÀÌ´Ù.

¾óÇÍ º¸±â¿¡´Â µÉ °Å °°°í ´©±¸³ª ÀÌ·± Äڵ带 ¶°¿Ã¸®Áö¸¸ ¸í¹éÇÑ ¿¡·¯ÀÌ´Ù. ±× ÀÌÀ¯´Â SELECTº¸´Ù PIVOTÀÌ ¸ÕÀú 󸮵DZ⠶§¹®ÀÌ´Ù. SELECT´Â ¸í·ÉÀÌ°í PIVOTÀº ¿¬»êÀÚ¿©¼­ PIVOTÀÇ ¿ì¼± ¼øÀ§°¡ ´õ ³ô´Ù. tTraffic¿¡ ´ëÇØ ÇǺ¿À» ¸ÕÀú ó¸®ÇÏ°í SELECT´Â ±× °á°ú¸¦ Ãâ·ÂÇÑ´Ù.

ÇǺ¿¿¡ ÀÇÇØ È¸Àü ´ë»óÀÎ car¿Í traffic Çʵå´Â »ç¶óÁö°í ´ë½Å ȸÀü °á°ú·Î ½Â¿ëÂ÷, Æ®·° Çʵ带 »õ·Î ¸¸µç´Ù. car¿Í trafficÀº ÇǺ¿ÀÇ Àç·áÀÏ »Ó ÇǺ¿ °á°ú·Î ³²¾Æ ÀÖÁö ¾Ê¾Æ SELECT ¹® ½ÇÇà½Ã¿¡´Â Á¸ÀçÇÏÁö ¾Ê´Â´Ù. SELECT ÀýÀÇ ÇÊµå ¸ñ·ÏÀº ÇǺ¿¿¡´Â ¾Æ¹«·± ¿µÇâÀ» ¹ÌÄ¡Áö ¸øÇϸç ÇǺ¿ ÈÄÀÇ Ãâ·Â ´ë»óÀÏ »ÓÀÌ´Ù.

ÀÌ ¹®Àå¿¡¼­ ÇǺ¿ ´ë»óÀº tTraffic ÀüüÀÌ´Ù. ½Ã°£À¸·Î ±×·ìÇÎÇÏÁö ¾ÊÀ¸·Á¸é ÇǺ¿Çϱâ Àü¿¡ hour¸¦ Á¦¿ÜÇØ¾ß ÇÏ¸ç ±×·¯·Á¸é tTraffic Àüü Å×ÀÌºí ´ë½Å ¾µ ¼­ºêÄõ¸®°¡ ÇÊ¿äÇÏ´Ù. ÇǺ¿ ´ë»ó Å×À̺íÀ» ÀζóÀκä·Î Á¤ÀÇÇÑ ÈÄ ÇǺ¿ÇÏ°í ±× °á°ú¸¦ Ãâ·ÂÇØ¾ß ÇÑ´Ù. ±×·¡¼­ ÇǺ¿ ¹®ÀåÀº Åë»ó ´ÙÀ½°ú °°Àº ¸ð¾çÀ¸·Î ÀÛ¼ºÇÑ´Ù.

 

SELECT Ãâ·Â´ë»ó FROM

(

     SELECT ÇǺ¿´ë»ó FROM tTraffic

) prepvt

PIVOT (SUM(Áý°èÇÒÇʵå) FOR ÇǺ¿Çʵå IN (¿­·Î ¸¸µé °ª)) pvt;

 

¼­ºêÄõ¸®¿¡¼­ ¿øÇÏ´Â Çʵ常 ¼±Á¤ÇÏ¿© prepvt ÀζóÀκ並 Á¤ÀÇÇÏ°í À̸¦ ÇǺ¿ÇÑ ÈÄ ¿ÜºÎÄõ¸®¿¡¼­ °á°ú¸¦ Ãâ·ÂÇÑ´Ù. tTrafficÀÌ ÀÖ´ø ÀÚ¸®¿¡ prepvtÀÌ µé¾î°¬À» »ÓÀÌ´Ù. prepvtÀÌ SELECT * FROM tTrafficÀ̶ó¸é ¿øº»°ú °°¾Æ ÇǺ¿ °á°úµµ °°´Ù.

±×·¯³ª ÀζóÀκä·Î Ç¥ÇöÇÏ¸é ¿©·¯ °¡Áö º¯ÇüÀ» ÁÙ ¿©Áö°¡ »ý±ä´Ù. ÀζóÀκäÀÇ SELECT *Àº °á±¹ ¸ðµç Çʵ带 ´Ù ³ª¿­ÇÑ °Í°ú °°À¸´Ï SELECT line, hour, car, trafficÀ̶ó°í ¾´ °Í°ú °°´Ù. ÀÌ ¸ñ·Ï¿¡¼­ ¿øÇÏ´Â Çʵ带 »ý·«ÇÏ¸é µÈ´Ù. ÀζóÀκäÀÇ ÇÊµå ¸ñ·Ï¿¡¼­ hour¸¦ »ý·«ÇØ º¸ÀÚ.

 

SELECT * FROM

(

     SELECT line, car, traffic FROM tTraffic

) prepvt

PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷', 'Æ®·°')) pvt;

¼¼ Çʵ常 ÀûÀ¸¸é car¿Í trafficÀº ÇǺ¿¿¡ ÀÇÇØ »ç¶óÁö°í line¸¸ ±×·ìÇÎ ´ë»óÀÌ´Ù. ÇǺ¿ÀÌ line¿¡ ´ëÇØ ±×·ìÇÎÇÏ¿© Áý°è ó¸®ÇÏ°í ¿ÜºÎÄõ¸®´Â ±× °á°ú¸¦ ¸ðµÎ Ãâ·ÂÇÑ´Ù. À§ ¸í·ÉÀÇ ½ÇÇà ¼ø¼­´Â ´ÙÀ½°ú °°´Ù. °¢ ºÎºÐÀÌ ´Ü°èº°·Î ½ÇÇàµÇ¸ç Á¤ÇØÁø ¿ªÇÒÀÌ ÀÖ´Ù.

¸í·ÉÀÌ ±æ°í º¹ÀâÇÏÁö¸¸ °á±¹Àº Å×À̺íÀ» °¡°øÇÏ¿© Ãâ·ÂÇÏ´Â SELECT ¹®ÀåÀÏ »ÓÀÌ´Ù. ÀÌ µÚ¿¡ WHERE ÀýÀ̳ª ORDER BY ÀýÀÌ ´õ ¿Ã ¼ö ÀÖÀ¸¸ç 2¹ø°ú 3¹ø »çÀÌ¿¡ ³¢¾îµç´Ù. ÇǺ¿ÇÑ °á°úµµ ÇϳªÀÇ Å×À̺íÀ̹ǷΠ´Ù¸¥ Å×À̺íÀ» Á¶ÀÎÇÒ ¼öµµ ÀÖ´Ù.

¿Ö ÇǺ¿ ´ë»ó Å×À̺íÀ» ÀζóÀκä·Î Á¤ÀÇÇÏ´ÂÁö ÀÌÇØÇØ¾ß ÀÚÀ¯ÀÚÀç·Î ÇǺ¿À» ±¸»çÇÒ ¼ö ÀÖ´Ù. ÇǺ¿ ´ë»ó°ú ±×·ìÇÎ ´ë»óÀ» Á¤È®È÷ ÁöÁ¤Çϱâ À§Çؼ­ÀÌ´Ù. ÀÌ¿Õ ¿¬±¸ÇÑ ±è¿¡ ´õ ±íÀÌ µé¾î°¡ º¸ÀÚ. ÀζóÀκä·Î ÇǺ¿ ´ë»óÀ» ¼±ÅÃÇÏ´Â ´ë½Å Àüü Å×À̺íÀ» ÇǺ¿ÇÑ ÈÄ GROUP BY¸¦ µû·Î ¼öÇàÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½ Äڵ嵵 ¶È°°Àº °á°ú¸¦ Ãâ·ÂÇÑ´Ù.

 

SELECT line, SUM(½Â¿ëÂ÷), SUM(Æ®·°) FROM tTraffic

PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷' AS ½Â¿ëÂ÷, 'Æ®·°' AS Æ®·°)) pvt

GROUP BY line;

 

tTraffic Å×À̺í Àüü¸¦ Â÷Á¾º°·Î ÇǺ¿ÇÑ ÈÄ ±× °á°ú¿¡ ´ëÇØ lineÀ¸·Î ±×·ìÇÎÇÏ¸é µµ·Îº° ÅëÇà·®ÀÌ ³ª¿Â´Ù. ¼­ºêÄõ¸®°¡ ¾ø¾î ±¸¹®ÀÌ Âª°í Á÷°üÀûÀÌ´Ù. ÇÏÁö¸¸ GROUP BY¸¦ Á÷Á¢ »ç¿ëÇßÀ¸¹Ç·Î SELECT Àý¿¡¼­ ±×·ìÇÎ ±âÁØ ÇÊµå ¿Ü¿¡´Â Áý°è ÇÔ¼ö¸¸ ½á¾ß ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖ´Ù.

µÎ ±¸¹®Àº ÇǺ¿ÇÒ ¶§ µü ¿øÇÏ´Â ±âÁØÀ¸·Î ±×·ìÇÎÇϸ鼭 Áý°è±îÁö ÇÒ °ÍÀÎÁö, ¾Æ´Ï¸é ÀÏ´Ü ÇǺ¿ÇØ ³õ°í ±×·ìÇÎÇϸ鼭 Áý°è¸¦ Á÷Á¢ ÇÒ °ÍÀÎÁö°¡ ´Ù¸£´Ù. ÇǺ¿ ´ë»ó¸¸ Àß ÁöÁ¤Çϸé PIVOT ¿¬»êÀÚ°¡ ±×·ìÇÎ, Áý°è¸¦ ¾Ë¾Æ¼­ ´Ù Çϵµ·Ï µÇ¾î ÀÖ¾î Æí¸®ÇÏ°í ÇÑ ¹ø¿¡ ó¸®ÇÏ´Ï ¼Óµµµµ ºü¸£´Ù.

¿©±â±îÁö ÀÌÇØÇßÀ¸¸é ÀÀ¿ëÇØ º¸ÀÚ. ¶È°°Àº ¹æ½ÄÀ¸·Î ¼­ºêÄõ¸®¿¡¼­ lineÀ» »ý·«ÇÏ¸é ½Ã°£º°·Î¸¸ ±×·ìÇÎµÇ¾î ½Ã°£º° ÅëÇà·®À» ÇÕ»êÇÏ¿© Ãâ·ÂÇÑ´Ù. ¾Æ·¡ Äõ¸®¸¦ º¸±â Àü¿¡ Á÷Á¢ ½Ç½ÀÇØ º¸ÀÚ. Àüü ÇǺ¿ ÈÄ GROUP BY hour¸¦ Àû¿ëÇÑ °Í°ú °°´Ù.

 

SELECT * FROM

(

     SELECT hour, car, traffic FROM tTraffic

) prepvt

PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷', 'Æ®·°')) pvt;

±×·¸´Ù¸é line, hour µÑ ´Ù »ý·«ÇÏ¸é ¾î¶»°Ô µÉ±î? ÇǺ¿ÀÇ Àç·á Çʵ常 ÀÖ°í ±× ¿ÜÀÇ Çʵ尡 ¾øÀ¸´Ï °á°ú´Â ÇǺ¿ Çʵ常 ³²´Â´Ù. ±×·ìÇÎÇÒ ´ë»óÀÌ ¾øÀ¸´Ï ½Ã°£°ú µµ·Î¿¡ µû¸¥ ÅëÇà·®ÀÌ ¸ðµÎ ÇÕ»êµÇ¾î Â÷Á¾¿¡ ´ëÇÑ Àüü ÅëÇà·®¸¸ ³ªÅ¸³­´Ù.

 

SELECT * FROM

(

     SELECT car, traffic FROM tTraffic

) prepvt

PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷', 'Æ®·°')) pvt;

ÇǺ¿ ¸í·ÉÀº Åë»ó µÎ °³ÀÇ SELECT¸¦ ÁßøÇÑ´Ù. ¾ÈÂÊÀÇ ÀζóÀκä´Â ÇǺ¿ ´ë»ó Å×À̺íÀÇ ¸ð¾çÀ» °áÁ¤ÇÏ°í ¿ÜºÎÄõ¸®´Â ÇǺ¿ °á°ú¼Â Áß ¾î¶² Çʵ带 ¾î¶»°Ô Ãâ·ÂÇÒ °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. Åë»ó ¿ÜºÎÄõ¸®¿¡´Â *¸¦ ¾²¸ç ÇǺ¿ °á°ú¼ÂÀ» ´Ù Ãâ·ÂÇÑ´Ù.

¿ÜºÎÄõ¸®¿¡¼­ ÀϺΠÇʵ带 »ý·«Çϸé ÇØ´ç Çʵå´Â Ãâ·Â ´ë»ó¿¡¼­ Á¦¿ÜÇÑ´Ù. ÀζóÀκ信 hour°¡ ÀÖÀ¸¸é ½Ã°£º°·Î ±×·ìÇÎÇÏÁö¸¸ ¿ÜºÎÄõ¸®¿¡ hour Çʵ带 »©¸é ½Ã°£°ªÀÌ ³ªÅ¸³ªÁö ¾Ê´Â´Ù. ¹®¹ýÀûÀ¸·Î´Â ÇÕ´çÇÏÁö¸¸ ÀÌ·¸°Ô µÇ¸é °¢ ÇàÀÇ Àǹ̰¡ ¸ðÈ£ÇØÁ® Åë°è·Î¼­ÀÇ Àǹ̰¡ ¾ø°í ¹«½¼ Á¤º¸ÀÎÁö ¾Ë¾Æº¸±âµµ ¾î·Æ´Ù.

 

SELECT line, Æ®·°, ½Â¿ëÂ÷ FROM

(

     SELECT line, hour, car, traffic FROM tTraffic

) prepvt

PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷' AS ½Â¿ëÂ÷, 'Æ®·°' AS Æ®·°)) pvt;

ÀζóÀκ信 Æ÷ÇÔÇÏ¿© ±×·ìÇÎÇÑ Çʵå´Â ÃÖÁ¾ Ãâ·Â ´ë»ó¿¡µµ Æ÷ÇÔÇÏ´Â °ÍÀÌ ÀÚ¿¬½º·´´Ù. ¿ÜºÎÄõ¸®¿¡¼­ ÇʵåÀÇ ¼ø¼­¸¦ Á¶Á¤Çϰųª Æ÷¸ËÀ» ¹Ù²Ü ¼öµµ ÀÖ´Ù.

 

SELECT line || '¼± ' || CAST(hour AS VARCHAR(10)) || '½Ã' AS ±¸ºÐ, Æ®·°, ½Â¿ëÂ÷ FROM

(

     SELECT line, hour, car, traffic FROM tTraffic

) prepvt

PIVOT (SUM(traffic) FOR car IN ('½Â¿ëÂ÷' AS ½Â¿ëÂ÷, 'Æ®·°' AS Æ®·°)) pvt

ORDER BY line;

line°ú hour¸¦ Á¶ÇÕÇÏ¿© ÇϳªÀÇ Çʵå·Î ÇÕÄ¡°í Æ®·°°ú ½Â¿ëÂ÷ÀÇ ¼ø¼­¸¦ Á¶Á¤Çß´Ù. ÇǺ¿ °á°úµµ ÇϳªÀÇ Å×À̺íÀ̹ǷΠSELECT Àý¿¡¼­ Çʵ忡 ´ëÇÑ ¸ðµç Á¶ÀÛÀ» ÀÚÀ¯·Ó°Ô ÇÒ ¼ö ÀÖ´Ù. µµ·Î¼øÀ¸·Î Á¤·ÄÇϱâ À§ÇØ ORDER BY lineÀ» ºÙ¿´´Ù.

ÇǺ¿À» ÇÏ´Â ´ë»óµµ Å×À̺íÀÌ°í ÇǺ¿À» ÇÑ °á°úµµ Å×À̺íÀÌ´Ù. ´çÀå ÇÊ¿äÄ¡ ¾Ê´õ¶óµµ ÇǺ¿ ÀüÈÄ¿¡ ¿©·¯ °¡Áö º¯ÇüÀ» °¡Çϱâ À§ÇØ ÀζóÀκ並 ±¸¼ºÇÏ´Â °ÍÀÌ ÁÁ´Ù. Áß°£¿¡ Á¶ÀÎÀÌ ³¢¾îµé ¼öµµ ÀÖ°í ÇǺ¿ °á°ú¸¦ UNIONÀ¸·Î ÇÕÄ¥ ¼öµµ ÀÖ´Ù. ±âº»±â¸¸ Ãæ½ÇÇÏ¸é ¿©·¯ °¡Áö ±â¹ýÀ» ¾ó¸¶µçÁö Á¶ÇÕÇÒ ¼ö ÀÖ´Ù.

¿¬½À ¹®Á¦

12.tSeason2¸¦ ÇǺ¿ÇÏ¿© °èÀýº° ÆǸŷ®À» Ãâ·ÂÇÏ¸é ¿©¸§, °Ü¿ï µî ÆǸŷ®ÀÌ ¾ø´Â Ä­Àº NULL·Î Ç¥½ÃµÇ´Âµ¥ 0À» ´ë½Å Ãâ·ÂÇØ º¸ÀÚ.

13.tMonthSale Å×ÀÌºí¿¡¼­ ³âµµº° ÃÑ ÆǸŷ®À» Áý°èÇ쵂 ³âµµ¸¦ ¿­·Î ȸÀüÇÏ¿© Ç¥½ÃÇ϶ó.

4.ÇǺ¿ÀÇ È°¿ë

°øÀå ÀÚµ¿È­³ª °èÁ °Å·¡ ½Ã½ºÅÛÀº µ¥ÀÌÅÍÀÇ »ý¼º ºóµµ°¡ Àæ´Ù. »ý»ê Àåºñ¿¡´Â °®°¡Áö ¼¾¼­°¡ ºÙ¾î ÀÖ°í Á¾·ùµµ õÂ÷ ¸¸º°ÀÌ¶ó ¿­À» ¹Ì¸® µðÀÚÀÎÇϱ⠾î·Æ´Ù. ÀÌ·² ¶§´Â ¼¾¼­ À̸§°ú ÇÔ²² °ªÀ» ·¹ÄÚµå·Î  ¹­¾î »ðÀÔÇÑ´Ù. ½ÇÁ¦ ½Ã½ºÅÛÀº º¹ÀâÇϹǷΠÀͼ÷ÇÑ Å×À̺í·Î ºñ½ÁÇÑ »óȲÀ» ¸¸µé¾î º¸ÀÚ.

 

CREATE TABLE tCityStat

(

     name CHAR(10),

     attr CHAR(10),

     value INT

);

 

INSERT INTO tCityStat VALUES ('¼­¿ï', 'area', 605);

INSERT INTO tCityStat VALUES ('¼­¿ï', 'popu', 974);

INSERT INTO tCityStat VALUES ('¼­¿ï', 'gu', 25);

INSERT INTO tCityStat VALUES ('ÀÎÁ¦', 'area', 1646);

INSERT INTO tCityStat VALUES ('ÀÎÁ¦', 'popu', 3);

INSERT INTO tCityStat VALUES ('ÀÎÁ¦', 'home', 15409);

INSERT INTO tCityStat VALUES ('ȫõ', 'area', 1819);

 

µµ½ÃÀÇ ¼Ó¼º°ªÀÌ ¼¾¼­·ÎºÎÅÍ µé¾î¿À´Â ÃøÁ¤°ªÀ̶ó°í °¡Á¤ÇÏÀÚ. ¼Ó¼ºÀÇ Á¾·ù´Â µµ½Ã¸¶´Ù Á¦°¢°¢ÀÌ´Ù. ¼­¿ïÀº ÀÚÄ¡±¸ÀÇ °³¼ö ¼Ó¼ºÀÌ ÀÖ°í ÀÎÁ¦´Â °¡±¸¼ö ¼Ó¼ºÀÌ ÀÖ´Ù. ÀԷµǴ °ªÀ» ÀÏ´Ü ½×¾Æ ³õ±â¸¸ ÇÏ¸é ¾î¶»°Ôµç È°¿ëÇÒ ¼ö ÀÖ´Ù.

ÀÌ Å×ÀÌºí¿¡¼­ °¢ µµ½ÃÀÇ Àα¸¹Ðµµ¸¦ °è»êÇØ º¸ÀÚ. tCity Å×À̺íÀ̶ó¸é Àα¸¸¦ ¸éÀûÀ¸·Î ³ª´©¸é µÇÁö¸¸ ÀÌ·± ±¸Á¶¿¡¼­´Â µÎ °ªÀÌ ´Ù¸¥ Çà¿¡ ÀÖ¾î °è»ê½ÄÀ» ¾µ ¼ö ¾ø´Ù. °è»ê½ÄÀº °°Àº ·¹ÄÚµå ¼Ò¼ÓÀÇ Çʵ峢¸®³ª »ó¼ö¸¦ ¿¬»êÇÏ´Â °ÍÀÌ´Ù. ¶³¾îÁ® ÀÖ´Â ÇàÀ» °è»êÇÏ·Á¸é tCity ºñ½ÁÇÑ ±¸Á¶·Î ¸¸µé¾î¾ß Çϸç À̶§ ÇÊ¿äÇÑ ±â¼úÀÌ ÇǺ¿ÀÌ´Ù.

 

SELECT * FROM tCityStat

PIVOT (MAX(value) FOR attr IN ('area' AS area, 'popu' AS popu)) pvt;

attr Ä÷³ÀÇ area, popu°ª¿¡ ´ëÇØ ÇǺ¿ÇÏ¸é ¸éÀû, Àα¸¸¦ ¿­·Î º¯È¯ÇÏ°í µµ½Ã¸íÀ¸·Î ±×·ìÇÎÇÑ´Ù. MAX ÇÔ¼ö·Î Áý°èÇÏ¿© Ȥ½Ã °°Àº µµ½Ã¿¡ ´ëÇØ ¸éÀûÀ̳ª Àα¸ Á¤º¸°¡ µÎ °³ ÀÌ»óÀÌ¸é ±× Áß ÃÖ´ë°ªÀ» ÃëÇÑ´Ù. ȫõÀº ¸éÀû Á¤º¸¸¸ ÀÖ°í Àα¸ Á¤º¸°¡ ¾ø¾î NULLÀÌ´Ù.

ÇǺ¿ ´ë»óÀÌ ¾Æ´Ñ Áö¿ª±¸ °³¼ö, °¡±¸¼ö ¼Ó¼ºÀº Áý°è¿¡¼­ Á¦¿ÜÇÑ´Ù. ¾Æ¹«¸® ¼Ó¼ºÀÌ ¸¹¾Æµµ IN ¸ñ·Ï¿¡¼­ ¹àÈù °ª¸¸ ¿­·Î ÀüȯÇÑ´Ù. ÇǺ¿ °á°ú´Â ÇϳªÀÇ Å×À̺íÀÌ¸ç °ü½É ÀÖ´Â µÎ ¼Ó¼ºÀ» ÇÑ ·¹ÄÚµå·Î ¸ð¾Ò´Ù. ÀÌÁ¦ ÀÌ µÎ ¼Ó¼ºÀ» ¿¬»êÇÏ¿© ÇÊ¿äÇÑ °ªÀ» ¸¸µé¸é µÈ´Ù.

 

SELECT name, ROUND(popu * 10000 / area, 2) AS Àα¸¹Ðµµ FROM

(

    SELECT * FROM tCityStat

    PIVOT (MAX(value) FOR attr IN ('area' AS area, 'popu' AS popu)) pvt

) A;

ÇǺ¿¹®À» ¼­ºêÄõ¸®·Î °¨½Î°í °á°ú Å×ÀÌºí¿¡¼­ area¿Í popu¸¦ ¿¬»êÇÏ¿© Àα¸¹Ðµµ¸¦ °è»êÇÑ´Ù. Àα¸°¡ ¸¸¸í ´ÜÀ§¿©¼­ 10000À» °öÇÑ ÈÄ ¸éÀûÀ¸·Î ³ª´©°í ¼Ò¼öÁ¡ ÀÌÇÏ 2ÀÚ¸®±îÁö¸¸ ÃëÇß´Ù. ȫõÀº Àα¸ Á¤º¸°¡ ¾ø¾î Àα¸¹Ðµµ¸¦ ±¸ÇÒ ¼ö ¾ø´Ù. ÇÊ¿äÇÑ °ªÀÌ ¾ø´Â µµ½Ã¸¦ Á¦¿ÜÇÏ·Á¸é PIVOT¹® ¾Æ·¡¿¡ WHERE Á¶°ÇÀ» ÁöÁ¤ÇÑ´Ù.

 

WHERE popu IS NOT NULL AND area IS NOT NULL

 

Àα¸¿Í ¸éÀûÁß Çϳª¶óµµ NULLÀ̸é Àα¸¹Ðµµ¸¦ ±¸ÇÒ ¼ö ¾ø´Ù. ¼¼·Î·Î ³ª¿­µÇ¾î ÀÖ´Â ºÐ¸®µÈ °ªÀ» ¿¬»êÇÏ·Á¸é ÇÑ ÇàÀ¸·Î ¸ðÀ¸±â À§ÇØ ÇǺ¿ÀÌ ²À ÇÊ¿äÇÏ´Ù. ÇǺ¿À» È°¿ëÇÏ´Â ÀüÇüÀûÀÎ ¿¹ÀÌ´Ù.

5.UNPIVOT

UNPIVOTÀº ÇǺ¿ÀÇ ¹Ý´ë µ¿ÀÛÀ» ¼öÇàÇÑ´Ù. ÇǺ¿ÀÌ °ªÀ» ¿­·Î ¹Ù²Ù´Âµ¥ ºñÇØ ¾ðÇǺ¿Àº ¿­À» °ªÀ¸·Î º¯È¯ÇÏ¿© ·¹Äڵ忡 ±â·ÏÇÑ´Ù. ±âº» Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

 

UNPIVOT (°ªÄ÷³ FOR ´ë»óÄ÷³ IN (¾ðÇǺ¿ ´ë»ó Ä÷³ ¸ñ·Ï))

 

UNPIVOTÀ» ½Ç½ÀÇØ º¸·Á¸é ÇǺ¿ÇØ ³õÀº Å×À̺íÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ ¸í·ÉÀ¸·Î ¾Õ¿¡¼­ ½Ç½ÀÇß´ø ÇǺ¿ÀÇ °á°ú¼ÂÀ» tSeasonPivot Å×À̺í·Î ÀúÀåÇÑ´Ù.

 

CREATE TABLE tSeasonPivot AS

SELECT * FROM tSeason

PIVOT (SUM(sale) FOR season IN ('º½' AS º½, '¿©¸§' AS ¿©¸§, '°¡À»' AS °¡À», '°Ü¿ï' AS °Ü¿ï));

 

Çʵå¸í¿¡ µû¿ÈÇ¥¸¦ ¾ø¾Ö±â À§ÇØ ÀÏÀÏÀÌ º°¸íÀ» ÁÖ¾ú´Ù. SQL Server¿¡¼­´Â ´ÙÀ½ ¸í·ÉÀ¸·Î ÇǺ¿ °á°ú¼ÂÀ» ÀúÀåÇÑ´Ù. ÇǺ¿¹®µµ ¾à°£ Â÷ÀÌ°¡ ÀÖÁö¸¸ Å×À̺íÀÇ »çº»À» ¸¸µå´Â ¸í·Éµµ ¿ÏÀüÈ÷ ´Ù¸£´Ù.

 

SELECT * INTO tSeasonPivot FROM tSeason

PIVOT (SUM(sale) FOR season IN (º½, ¿©¸§, °¡À», °Ü¿ï)) pvt;

 

ÇǺ¿ÇÑ Å×À̺íÀ» ´Ù½Ã ¿ø·¡´ë·Î µ¹¸± ¶§ UNPIVOT ¸í·ÉÀ» »ç¿ëÇÑ´Ù.

 

SELECT * FROM tSeasonPivot

UNPIVOT (sale FOR season IN (º½, ¿©¸§, °¡À», °Ü¿ï)) unpvt;

º½, ¿©¸§, °¡À», °Ü¿ï Çʵ带 season ÇʵåÀÇ °ªÀ¸·Î ¸¸µé°í °èÀýº° ÆǸŷ®ÀÎ °ªÀº sale Çʵå·Î ¸¸µç´Ù. ¿øº»°ú ÇǺ¿, ¾ðÇǺ¿¿¡ ÀÇÇØ Å×À̺íÀÌ ´ÙÀ½°ú °°ÀÌ ¹Ù²ï´Ù.

½Ç½ÀÀ» À§ÇØ Àӽà Å×À̺í±îÁö ¸¸µå´Â °ÍÀº ³Ê¹« ¹ø°Å·Ó´Ù. ÇǺ¿ °á°ú¸¦ ÀζóÀκä·Î ¸¸µç ÈÄ ´Ù½Ã ÇǺ¿Çصµ °á°ú´Â °°´Ù. SQL Server´Â ÇǺ¿½Ã °ª ¸ñ·ÏÀÇ º°¸í¸¸ »ý·«ÇÏ¸é µÈ´Ù.

 

SELECT * FROM

(

    SELECT * FROM tSeason

    PIVOT (SUM(sale) FOR season IN

    ('º½' AS º½, '¿©¸§' AS ¿©¸§, '°¡À»' AS °¡À», '°Ü¿ï' AS °Ü¿ï)) pvt

) A

UNPIVOT (sale FOR season IN (º½, ¿©¸§, °¡À», °Ü¿ï)) unpvt;

 

ÇǺ¿Çß´Ù°¡ ¾ðÇǺ¿ÇÏ¸é ·¹ÄÚµåÀÇ ¼ø¼­°¡ Á¶±Ý¾¿ ¹Ù²ð ¼ö´Â ÀÖÁö¸¸ °á±¹ ³»¿ëÀº °°´Ù. UNPIVOT¹®¿¡¼­ saleÀ̳ª season Ä÷³¸íÀº ¾îµð±îÁö³ª ÀÓÀÇ°ªÀÌ¸ç ¿øº»°ú ´Þ¶óµµ »ó°ü¾ø´Ù. ÇǺ¿ °úÁ¤¿¡¼­ sale, season Çʵå¸íÀº »ç¶óÁ® ¹ö·Á ¾ðÇǺ¿ÇÒ ¶§ ´Ù½Ã Ä÷³¸íÀ» ¿øÇϴ´ë·Î ÁöÁ¤ÇÏ¸é µÈ´Ù.

Áߺ¹ÀÌ ¾ø¾ú´ø tSeason Å×À̺íÀº ¾ðÇǺ¿ÇÏ¸é ¿ø·¡ °ªÀ» ´Ù ãÀ» ¼ö ÀÖÁö¸¸ Áý°è ÇÔ¼ö¸¦ Àû¿ëÇÏ¿© ÇǺ¿ÇÑ °á°ú¼ÂÀº ¿ø·¡ °ªÀ» ãÀ» ¼ö ¾ø´Ù. tSeason2¿¡ ´ëÇØ ÇǺ¿Çß´Ù°¡ ¾ðÇǺ¿À» ¼öÇàÇØ º¸ÀÚ. À§ Äõ¸®¹®ÀÇ tSeasonÀÇ À̸§¸¸ tSeason2·Î º¯°æÇÏ¸é µÈ´Ù.

¿ø·¡ Å×À̺íÀÇ Â«»Í °Ü¿ï ÆǸŷ® 2°³¸¦ ÇÕÃÄ 70À¸·Î ÇǺ¿Çß´Ù. ÀÌ·¸°Ô ÇÕÃĹö¸° °ªÀº ¿ø·¡ÀÇ ÆǸŷ®À» ¾Ë ¼ö ¾ø¾î ¾ðÇǺ¿Çϸé ÇÕÃÄÁø 70À¸·Î¸¸ ³ª¿Â´Ù. 30 + 40À» 70À¸·Î Áý°èÇØ ¹ö¸®¸é ¿ø·¡ 30 + 40À̾ú´ÂÁö 40 + 30À̾ú´ÂÁö ¶Ç´Â 10 + 20 + 15 + 25¿´´ÂÁö ¾Ë ¹æ¹ýÀÌ ¾ø´Ù.

±×·¡¼­ UNPIVOTÀº PIVOTÀÇ ¿ÏÀüÇÑ ¹Ý´ë ¿¬»êÀÚ´Â ¾Æ´Ï´Ù. ÇÕÃÆ´Ù°¡ ´Ù½Ã µÇµ¹¸°´Ù°í Çؼ­ ¿ø·¡°ªÀ» ±¸ÇÏÁö ¸øÇÏ´Â °ÍÀº ¼öÇÐÀûÀ¸·Î Áö±ØÈ÷ ´ç¿¬ÇÑ Çö»óÀÌ´Ù. µ¿ÀÛ¸¸ ¹Ý´ëÀÏ »Ó ¿ø·¡ÀÇ °á°ú¼ÂÀº Á¤È®È÷ ¾Ë ¼ö ¾ø´Ù.