SQL Server 顯示行號的方法:

     以前都不習慣于總結,今天為了找一個簡單很的方法找了半天才找到了.今天先把它記錄下.

      1:利用IDENTITY屬性和臨時表實現:

 select  a.*,IDENTITY(int, 1,1) AS number  into #a  from   a_log a  order by optime
 select * from #a

     

  

     2: 利用count()函數:

 

    select  a.*,序號=(select count(1)+1 from a_log where host_names=a.host_names and optime<a.optime)

     From a_log  a

 

     select  a.*,排名=(select count(1) from a_log where host_names=a.host_names and optime<=a.optime)

     From a_log  a

 

   3  SQL 2005  可以利用Row_number()函數

     select a.*,row_number()over(partition by host_names order by optime) as cn from a_log

 

  

     備註:

   select * From a_log  

服務器名稱         應用程序名稱                  執行時間

---------------------------------------------------------------------------------

RENY_PC        SQL Query Analyzer       2009-08-27 13:41:06.903

RENY_PC                                              2009-08-27 13:43:56.903 

RENY_PC                                              2009-08-27 13:44:19.437 

 

想根據服務器名稱分組,根據執行時間的先後順序設置序號

方法1:不能根據服務器名稱分組,只按時間的先後順序進行設置序號字段

方法2: 利用了表與自身連接的特點,把一個表當做兩個表來看.  注意兩個語句之間的不同點,count(1)+1 時 用<號,count(1)時 用<=號

方法3: 直接利用sql 2005的分析函數.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值