Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB

oracleÐÐÁÐת»»£¨×ª£©

1¡¢¹Ì¶¨ÁÐÊýµÄÐÐÁÐת»»
Èç
student subject grade
--------- ---------- --------
student1 ÓïÎÄ 80
student1 Êýѧ 70
student1 Ó¢Óï 60
student2 ÓïÎÄ 90
student2 Êýѧ 80
student2 Ó¢Óï 100
……
ת»»Îª
ÓïÎÄ Êýѧ Ó¢Óï
student1 80 70 60
student2 90 80 100
……
Óï¾äÈçÏ£ºselect student, 
sum(decode(subject,'ÓïÎÄ', grade,null)) "ÓïÎÄ",
sum(decode(subject,'Êýѧ', grade,null)) "Êýѧ",
sum(decode(subject,'Ó¢Óï', grade,null)) "Ó¢Óï"
from table
group by student;
¡¡
2¡¢²»¶¨ÁÐÐÐÁÐת»»
Èç
c1 c2
--- -----------
1 ÎÒ
1 ÊÇ
1 Ë­
2 Öª
2 µÀ
3 ²»
……
ת»»Îª
1 ÎÒÊÇË­
2 ÖªµÀ
3 ²»
ÕâÒ»ÀàÐ͵Äת»»¿ÉÒÔ½èÖúÓÚPL/SQLÀ´Íê³É£¬ÕâÀï¸øÒ»¸öÀý×Ó
CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER)
RETURN VARCHAR2
IS
Col_c2 VARCHAR2(4000);
BEGIN
FOR cur IN (SELECT c2 from t WHERE c1=tmp_c1) LOOP
Col_c2 := Col_c2||cur.c2;
END LOOP;
Col_c2 := rtrim(Col_c2,1);
RETURN Col_c2;
END;
select distinct c1 ,get_c2(c1) cc2 from table;
»òÕß²»ÓÃpl/sql£¬ÀûÓ÷ÖÎöº¯ÊýºÍ CONNECT_BY ʵÏÖ£º
SELECT c1, SUBSTR (MAX (SYS_CONNECT_BY_PATH (c2, ';')), 2) NAME
    from (SELECT c1, c2, rn, LEAD (rn) OVER (PARTITION BY c1 ORDER BY rn) rn1
            from (SELECT c1, c2, ROW_NUMBER () OVER (ORDER BY c2) rn
                    from t))
START WITH rn1 IS NULL
CONNECT BY rn1 = PRIOR rn
GROUP BY c1;
3¡¢ÁÐÊý²»¹Ì¶¨£¨½»²æ±íÐÐÁÐתÖã©
ÕâÖÖÊDZȽÏÂé·³µÄÒ»ÖÖ£¬ÐèÒª½èÖúpl/sql£º
ԭʼÊý¾Ý£º
CLASS1     CALLDATE         CALLCOUNT
1          2005-08-08       40
1          2005-08-07       6
2          2005-08-08       77
3          2005-08-09       33
3         


Ïà¹ØÎĵµ£º

Àí½âORACLEÊý¾Ý¿â×Ö·û¼¯

Ò»£®ÒýÑÔ
   
ORACLE
Êý¾Ý¿â×Ö·û¼¯£¬¼´Oracle
È«Çò»¯Ö§³Ö(Globalization Support)
£¬»ò¼´¹ú¼ÒÓïÑÔÖ§³Ö£¨NLS
£©Æä×÷ÓÃÊÇÓñ¾¹úÓïÑԺ͸ñʽÀ´´æ´¢¡¢´¦ÀíºÍ¼ìË÷Êý¾Ý¡£ÀûÓÃÈ«Çò»¯Ö§³Ö£¬ORACLE
ΪÓû§Ìṩ×Ô¼ºÊìϤµÄÊý¾Ý¿âĸÓï»·¾³£¬ÖîÈçÈÕÆÚ¸ñʽ¡¢Êý×Ö¸ñʽºÍ´æ´¢ÐòÁеȡ£Oracle
¿ÉÒÔÖ§³Ö¶àÖÖÓïÑÔ¼°×Ö·û¼ ......

OracleÈÕÆÚº¯Êý

OracleÈÕÆÚº¯Êý¼¯½õ(Ò»)
Ò»¡¢ ³£ÓÃÈÕÆÚÊý¾Ý¸ñʽ
1.Y»òYY»òYYY ÄêµÄ×îºóһ룬Á½Î»»òÈýλ
SQL> Select to_char(sysdate,'Y') from dual;
TO_CHAR(SYSDATE,'Y')
--------------------
7
SQL> Select to_char(sysdate,'YY') from dual;
TO_CHAR(SYSDATE,'YY')
---------------------
07
SQL> Select to_ch ......

ORACLE ÈçºÎ²úÉúÒ»¸öËæ»úÊý

ORACLE ÈçºÎ²úÉúÒ»¸öËæ»úÊý:DBMS_RANDOM
--1¡¢Ð¡Êý( 0 ~ 1)
     select dbms_random.value from dual ;
--2¡¢Ö¸¶¨·¶Î§ÄÚµÄСÊý ( 0 ~ 100 )
     select dbms_random.value(0,100) from dual ;
--3¡¢Ö¸¶¨·¶Î§ÄÚµÄÕûÊý ( 0 ~ 100 )
     select trunc(d ......

oracle rank()

ÏȽ¨ÁËÕŲâÊÔ±í
SQL> select * from test_a;
ID                   PLAYNAME                  SCORE
-------------------- --- ......

Ïê½âOracleÊý¾Ý¿âÓÅ»¯·½°¸Óëʵ¼ù

ÔÚÕâÀïÎÒÃǽ«½éÉÜOracleÊý¾Ý¿âÓÅ»¯·½°¸Óëʵ¼ù£¬²»Í¬µÄ»·¾³»áÓв»Í¬µÄµ÷ÊÔ£¬µ«ÊÇÒ²»áÓвî±ð£¬Ï£Íû´ó¼ÒÄܺÏÀíµÄÎüÊÕ¡£ Ò»¡¢Ç°ÑÔ ¶þ¡¢ORACLEÊý¾Ý¿âÓÅ»¯¸ÅÊö 1¡¢ÄÚ´æµÈ²ÎÊýÅäÖõÄÓÅ»¯ 2¡¢¼õÉÙÎïÀí¶ÁдµÄÓÅ»¯ 3¡¢ÅúÁ¿Öظ´²Ù×÷µÄSQLÓï¾ä¼°´ó±í²Ù×÷µÄÓÅ»¯ ¶þ¡¢ORACLEÊý¾Ý¿âÓÅ»¯·½°¸ 1¡¢ÄÚ´æµÈOracleϵͳ²ÎÊýÅäÖà 2¡¢Ê ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ