CREATE PROCEDURE SP_GetWAPSiteVisitTopNInfo
@TopNSize  int=50,
@startTime int=0,
@endTime int=0
ASSET NOCOUNT ONDECLARE @strSQL varchar(1000)IF @startTime != 0 --OR @endTime != 0
BEGIN
set @strSQL = "SELECT TOP " + str(@TopNSize) + " WAP_SITE,COUNT(*) AS COUNT " 
+ " FROM WSA_WAP_SDR " 
+ " WHERE WAP_SITE LIKE 'http://%' AND " + str(@startTime) + "<Timestamp and Timestamp>" + str(@endTime)
+ " GROUP BY WAP_SITE " 
+ " ORDER BY COUNT DESC"
END
ELSE
BEGIN
set @strSQL = "SELECT TOP " + str(@TopNSize) + " WAP_SITE,COUNT(*) AS COUNT " 
+ " FROM WSA_WAP_SDR " 
+ " WHERE WAP_SITE LIKE 'http://%' "
+ " GROUP BY WAP_SITE " 
+ " ORDER BY COUNT DESC"
ENDEXEC (@strSQL)SET NOCOUNT OFF

解决方案 »

  1.   

    try:
    CREATE PROCEDURE SP_GetWAPSiteVisitTopNInfo 
    @TopNSize  int=50, 
    @startTime int=0, 
    @endTime int=0 
    AS SET NOCOUNT ON DECLARE @strSQL varchar(1000) IF @startTime != 0 --OR @endTime != 0 
    BEGIN 
      set @strSQL = 'SELECT TOP ' + str(@TopNSize) + ' WAP_SITE,COUNT(*) AS [COUNT] ' 
                  + ' FROM WSA_WAP_SDR ' 
                  + ' WHERE WAP_SITE LIKE ''http://%'' AND ' + str(@startTime) + ' <Timestamp AND Timestamp>' + str(@endTime) 
                  + ' GROUP BY WAP_SITE ' 
                  + ' ORDER BY COUNT DESC' 
    END 
    ELSE 
    BEGIN 
      set @strSQL = 'SELECT TOP ' + str(@TopNSize) + ' WAP_SITE,COUNT(*) AS [COUNT] ' 
                  + ' FROM WSA_WAP_SDR ' 
                  + ' WHERE WAP_SITE LIKE ''http://%'' ' 
                  + ' GROUP BY WAP_SITE ' 
                  + ' ORDER BY COUNT DESC' 
    END EXEC (@strSQL) SET NOCOUNT OFF
      

  2.   

    Timestamp 能这么比较么 最起码你要转换成整形 和你的传进来的参数类型一致
      

  3.   

    你以为是程序中呀,呵呵,SQL中字符连接用单引号'',
    试试钻钻的