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

sql overµÄ×÷Óü°Ó÷¨


RANK ( ) OVER ( [query_partition_clause] order_by_clause )
DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause )
¿ÉʵÏÖ°´Ö¸¶¨µÄ×ֶηÖ×éÅÅÐò£¬¶ÔÓÚÏàͬ·Ö×é×ֶεĽá¹û¼¯½øÐÐÅÅÐò,
ÆäÖÐPARTITION BY Ϊ·Ö×é×ֶΣ¬ORDER BY Ö¸¶¨ÅÅÐò×Ö¶Î
over²»Äܵ¥¶ÀʹÓã¬ÒªºÍ·ÖÎöº¯Êý£ºrank(),dense_rank(),row_number()µÈÒ»ÆðʹÓá£
Æä²ÎÊý£ºover£¨partition by columnname1 order by columnname2£©
º¬Ò壺°´columname1Ö¸¶¨µÄ×ֶνøÐзÖ×éÅÅÐò£¬»òÕß˵°´×Ö¶Îcolumnname1µÄÖµ½øÐзÖ×éÅÅÐò¡£
ÀýÈ磺employees±íÖУ¬ÓÐÁ½¸ö²¿ÃŵļǼ£ºdepartment_id £½10ºÍ20
select department_id£¬rank£¨£© over£¨partition by department_id order by salary) from employees¾ÍÊÇÖ¸ÔÚ²¿ÃÅ10ÖнøÐÐнˮµÄÅÅÃû£¬ÔÚ²¿ÃÅ20ÖнøÐÐнˮÅÅÃû¡£Èç¹ûÊÇpartition by org_id£¬ÔòÊÇÔÚÕû¸ö¹«Ë¾ÄÚ½øÐÐÅÅÃû¡£
ÒÔÏÂÊǸöÈ˼û½â£º
sqlÖеÄoverº¯ÊýºÍrow_numbert()º¯ÊýÅäºÏʹÓ㬿ÉÉú³ÉÐкš£¿É¶ÔijһÁеÄÖµ½øÐÐÅÅÐò£¬¶ÔÓÚÏàֵͬµÄÊý¾ÝÐнøÐзÖ×éÅÅÐò¡£ÈçÏÂ±í£º
Ö´ÐÐÓï¾ä£ºselect row_number() over(order by AID DESC) as rowid,* from bbºóµÄ½á¹ûÈçÏ£º
rowid±êʶÐкÅÓÐÁË£¬Í¬Ê±AIDÒ²°´½µÐòÅÅÁС£AIDÓÐÖØ¸´µÄ¼Ç¼£¬Èç¹ûҪɾ³ýrowidΪ2Ëù¶ÔÓ¦µÄ¼Ç¼Ôò¿ÉÒÔ£º
with [a] as
(select row_number() over(order by AID desc) as rowid,* from bb)
delete from [a] where rowid=2
Èç¹û²é¿´rowid Ϊ5Ëù¶ÔÓ¦µÄ¼Ç¼µÄÐÅÏ¢£¬¿ÉÒÔ£º
with [b] as
(select row_number() over(order by AID desc) as rowid,* from bb)
select * from [b] where rowid=5
×¢Ò⣺
overÀïµÄorderÖ»Äܲé²éѯÀïµÄԭʼÊý¾Ý½øÐвÙ×÷£¬²»»á¶Ô¼ÆËã³öµÄÐÂÖµ»òÐÂ×Ö¶ÎÆð×÷Óá£
msdnÖеÄ˵·¨ÈçÏ£º
<ORDER BY ×Ó¾ä> Ö»ÄÜÒýÓÃͨ¹ý from ×Ó¾ä¿ÉÓõÄÁС£<ORDER BY ×Ó¾ä>²»ÄÜÓë¾ÛºÏ´°¿Úº¯ÊýÒ»ÆðʹÓá£


Ïà¹ØÎĵµ£º

SQL_²éѯµ±Ìì¡¢½ü¼¸Ìì¡¢±¾ÖÜ¡¢±¾ÔµÄSQLÓï¾ä

¾­³£»áÓÐʱºòÒªÓõ½²éѯµ±Ì죬½ü¼¸Ì죬±¾ÖÜ£¬±¾ÔµÄÏà¹ØÊý¾Ý£¬ËùÒԼǼһÏÂÕâЩ±È½ÏÌØÊâµÄSQLÓï¾ä~~
--µ±Ìì
(usrRegTime >=CONVERT(varchar(10),getDate(),120)+' 00:00:00' and usrRegTime <=CONVERT(varchar (10),getDate(),120)+' 23:59:59')
--½üÈýÌì
DateDiff(day,usrRegTime,getdate()) <=3
--±¾ÖÜ ......

¼¸µÀ¾­µäµÄsqlÌâÄ¿

£¨1£©±íÃû£º¹ºÎïÐÅÏ¢
¹ºÎïÈË      ÉÌÆ·Ãû³Æ     ÊýÁ¿
A            ¼×          2
B            ÒÒ  ......

ÎÄ˼´´ÐµÄSQL±ÊÊÔÌâ


ÌâÄ¿£ºÓÐAºÍBÁ©¸ö±í£¬¶¼¶¨ÒåÏàͬµÄÖ÷¼ü£¬Ð´³öSQLÓï¾äÕÒ³öA±íÖÐÓжøB±íÖÐûÓеļǼ£¬È»ºó°ÑûÓеļǼ²åÈëµ½B±íÖС£
SQLÓï¾äÈçÏ£º
CREATE TABLE  A_MINUS_B  AS              ---´´½¨Ò»¸ö²î¼¯±íA_MINUS_B ,×¢ÒâSELECT Óï¾äÒ»¶¨ÒªA±íÔÚǰ¡ ......

ÔÚsql*plusÏÂÉèÖÃautotrace

    ÎÒÃÇÔÚ¹¤×÷ÖÐÏ£ÍûÄÜ¿´¼û×Ô¼ºÔËÐеÄDMLÓï¾äµÄÔËÐб¨¸æ£¬ÀýÈçselect,delete,update,megreºÍinsertÓï¾äÔËÐкóµÄÇé¿ö£¬ÒÔÓÃÀ´¼àÊӺ͵÷ÓÅÓï¾ä¡£ÎÒÃÇͨ³£ÔÚsql*plusÖÐʹÓÃset autotrace on¿ªÆô¡£
    ÄÇautotraceÊÇÈçºÎ°²×°µÄÄØ£¿thomas kyteµÄ´ó×÷Öиø³öÁËÏêϸµÄ·½·¨ºÍ½âÊÍ£º
  & ......

sql2005ÖÐÒ»¸öxml¾ÛºÏµÄÀý×Ó

sql2005ÖÐÒ»¸öxml¾ÛºÏµÄÀý×Ó ÊÕ²Ø
¸ÃÎÊÌâÀ´×ÔÂÛ̳ÌáÎÊ£¬ÑÝʾSQL´úÂëÈçÏÂ
--½¨Á¢²âÊÔ»·¾³
set nocount on
create table test(ID varchar(20),NAME varchar(20))
insert into test select '1','aaa'
insert into test select '1','bbb'
insert into test select '1','ccc'
insert into test select '2','ddd'
inser ......
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ