/****** 对象:  StoredProcedure [dbo].[SuperSpeed]    脚本日期: 06/21/2010 15:18:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SuperSpeed]
@TableDate VARCHAR(50), --是查询当天表,还是历吏表的时间点
    @UserID     VARCHAR(50),
@SimNo VARCHAR(50), --SIM卡号
@CarNo VARCHAR(50), --车牌号
@StartTime VARCHAR(50), --开始时间
@EndTime VARCHAR(50), --结束时间
@IsGetAll INT, --导出时用到,得到全部的开关
@CurrPage INT, --当前页
@PageSize INT, --每页大小
@RecordNumber BIGINT OUT
AS
BEGIN
DECLARE @TableName nVARCHAR(100); --得到@TableName的值
SET @TableName='t_GPS';
if (CONVERT(VARCHAR(10),@StartTime,120)>CONVERT(VARCHAR(10),@TableDate,120))
BEGIN
SET @TableName='t_GPS'+CONVERT(varchar(10), CAST(@StartTime AS DATETIME), 112);
END
BEGIN
WITH   BOMCTE(TX_Name,TX_Grade,level)   
AS   
(   
(SELECT   kk.TX_Name,kk.TX_Grade,0
FROM   T_User  kk 
WHERE   kk.TX_Name=''+@UserID+'' ) 
UNION   ALL   
SELECT   pp.TX_Name,pp.TX_Grade,    BOMCTE.level+1
FROM   t_user pp 
JOIN   BOMCTE   
ON   BOMCTE.TX_Name  =  pp.tx_parentID 
)
select TX_Name,TX_Grade  into #Temp  from BOMCTE ; select t_simbus.ID_SIM,t_simbus.ID_BUS,SuperSpeed into #temp2 from #temp  left join t_simbus  on #temp.TX_Name = t_simbus.userID where TX_Grade=4 and t_simbus.ID_BUS like '%' + @CarNo + '%' and t_simbus.ID_SIM like '%' + @SimNo + '%' ; DECLARE @tSQL nVARCHAR(4000); set @tSQL ='select #temp2.ID_SIM,#temp2.ID_BUS,SuperSpeed,DT_GPSDATETIME,NM_SPEED  from #temp2 left join '+ @TableName + ' as gps on gps.id_sim=#temp2.ID_SIM where NM_speed>isnull(SuperSpeed,0)';
CREATE TABLE #temptb(
[ID_SIM] [varchar](11) NULL,
[ID_BUS] [varchar](20) NULL,
[SuperSpeed] [decimal](12, 2) NULL ,
[DT_GPSDATETIME] [datetime] NULL,
[NM_SPEED] [numeric](3, 0) NULL

insert into #temptb  exec sp_executesql  @tSQL ;
select @RecordNumber=count(*) from #temptb;
END
IF (@IsGetAll=1)
BEGIN
select * from #temptb;
END
ELSE
BEGIN
SELECT   top (  @PageSize ) * FROM   #temptb  where DT_GPSDATETIME not in 
(select top ((@PageSize)*((@CurrPage)-1)) DT_GPSDATETIME from  #temptb );
endEND