select no= identity(int,1,1),* into #tmp from table
然後再 select * from #tmp 出來看
SQL Server不像oracle一樣
所以要用特殊方法解決
AA.03.03.01 同一工作(用count)
利用同一table,然後搭配group by
優點:
容易撰寫
可以搭配view來執行
缺點:
執行速度慢
用多欄位時很麻煩
例子:
create view vw_test_Date
as
select rank=count(*), a1.trade_date
from AM_Date a1, AM_Date a2
where a1.trade_date> a2.trade_date
group by a1.trade_date
go
select * from vw_test_Date order by 1
AA.03.03.02 利用Function(用cursor)
只用一個table,然後搭配cursor
優點:
執行速度較快
可以搭配function來執行
缺點:
不容易撰寫
例子:
alter FUNCTION fn_test_Date(
)
RETURNS @ret_Table TABLE (
rank int,
trade_date varchar(8)
)
AS
BEGIN
declare @pi_var int
declare @pi_Date varchar(8)
set @pi_var=1
declare Cus_Menu cursor for
select trade_date from AM_Date
open Cus_Menu
fetch next from Cus_Menu into @pi_Date
while @@fetch_status =0 begin
insert @ret_Table
select @pi_var, @pi_Date
set @pi_var=@pi_var+1
fetch next from Cus_Menu into @pi_Date
end
close Cus_Menu
deallocate Cus_Menu
RETURN
END
go
select * from fn_test_Date()
2007年11月28日 星期三
訂閱:
張貼留言 (Atom)

沒有留言:
張貼留言