ALTER proc [dbo].[proc_searchByDate](@starttime datetime,@endtime datetime,@webid char(17),@sort varchar(50),@userid char(17))
asdeclare @sqlstr varchar(4000)
declare @sqlwhere varchar(4000)
declare @sql varchar(4000)
if @webid <> null and @webid <>'' and @webid <>'-1'
begin
set @sql=' webid,'
set @sqlwhere=' where webid='''+@webid+''''
endset @sqlstr='
select'+@sql+' CONVERT(varchar(10) ,enterdate,120) enterdate,COUNT(*) c1,SUM(dialoguenum) d1 into ##t1
from tb_chat_Visitors  where userid='''+@userid+'''
enterdate between '''+CONVERT(varchar(10), @starttime,120)+'''  and '''+CONVERT(varchar(10), @endtime,120)+''' 
group by '+@sql+'CONVERT(varchar(10) ,enterdate,120)'
exec(@sqlstr)
set @sqlstr='
select'+@sql+' CONVERT(varchar(10) ,enterdate,120) enterdate,COUNT(*) c2,SUM(dialoguenum) d2 into ##t2
from tb_chat_Visitors  where userid='''+@userid+''' and isvalid=2
enterdate between '''+CONVERT(varchar(10), @starttime,120)+'''  and '''+CONVERT(varchar(10), @endtime,120)+''' 
group by '+@sql+'CONVERT(varchar(10) ,enterdate,120)'
exec(@sqlstr)
set @sqlstr='
select'+@sql+' CONVERT(varchar(10) ,enterdate,120) enterdate,COUNT(*) c3,SUM(dialoguenum) d3 into ##t3
from tb_chat_Visitors  where userid='''+@userid+''' and dialoguevalid=1
enterdate between '''+CONVERT(varchar(10), @starttime,120)+'''  and '''+CONVERT(varchar(10), @endtime,120)+''' 
group by '+@sql+'CONVERT(varchar(10) ,enterdate,120)'
exec(@sqlstr)if @sql<>null and @sql<>''
begin
set @sql=' ##t1.webid,'
endset @sqlstr=' 
select '+@sql+'CONVERT(varchar(10) ,##t1.enterdate,120) enterdate,isnull(avg(##t1.c1),0) 点击量,isnull(avg(##t1.d1),0) 聊天量,isnull(avg(##t2.c2),0) 有效名片量,isnull(avg(##t3.c3),0) 有效聊天量,isnull(avg(##t1.d1),0)/isnull(avg(##t1.c1),0)*100 聊天转换率,isnull(avg(##t2.c2),0)/isnull(avg(##t1.d1),0)*100 有效名片转换率   from ##t1 
left join ##t2 on ##t2.enterdate=##t1.enterdate
left join ##t3 on ##t3.enterdate=##t1.enterdate '+@sqlwhere+'
group by '+@sql+'CONVERT(varchar(10) ,##t1.enterdate,120) '+@sort
exec(@sqlstr)
调用之后没有显示结果 显示的是命令已成功完成存储sqlserversql

解决方案 »

  1.   

    把exec改成print,然后打印出代码,单独执行看看
      

  2.   

    先试试这个,如果空白,通常情况下是where中出现问题,最多情况下是日期匹配上的问题ALTER  proc [dbo].[proc_searchByDate](@starttime datetime,@endtime datetime,@webid char(17),@sort varchar(50),@userid char(17))
    asdeclare @sqlstr varchar(4000)
    declare @sqlwhere varchar(4000)
    declare @sql varchar(4000)
    if @webid <> null and @webid <>'' and @webid <>'-1'
    begin
    set @sql=' webid,'
    set @sqlwhere=' where webid='''+@webid+''''
    endset @sqlstr='
    select'+@sql+' CONVERT(varchar(10) ,enterdate,120) enterdate,COUNT(*) c1,SUM(dialoguenum) d1 into ##t1
    from tb_chat_Visitors  where userid='''+@userid+'''
    enterdate between '''+CONVERT(varchar(10), @starttime,120)+'''  and '''+CONVERT(varchar(10), @endtime,120)+''' 
    group by '+@sql+'CONVERT(varchar(10) ,enterdate,120)'
    PRINT(@sqlstr)
      

  3.   

    我改成了cast (@starttime as varchar(10))还是不行..
      

  4.   

    执行试试ALTER  proc [dbo].[proc_searchByDate](@starttime datetime,@endtime datetime,@webid char(17),@sort varchar(50),@userid char(17))
    as
     
    declare @sqlstr varchar(4000)
    declare @sqlwhere varchar(4000)
    declare @sql varchar(4000)
    if @webid <> null and @webid <>'' and @webid <>'-1'
    begin
    set @sql=' webid,'
    set @sqlwhere=' where webid='''+@webid+''''
    end
     
    set @sqlstr='
    select'+@sql+' CONVERT(varchar(10) ,enterdate,120) enterdate,COUNT(*) c1,SUM(dialoguenum) d1 into ##t1
    from tb_chat_Visitors  where userid='''+@userid+'''
    enterdate between '''+CONVERT(varchar(10), @starttime,120)+'''  and '''+CONVERT(varchar(10), @endtime,120)+''' 
    group by '+@sql+'CONVERT(varchar(10) ,enterdate,120)'
    EXEC (@sqlstr)
    SELECT ##t1
      

  5.   

    消息 207,级别 16,状态 1,过程 proc_searchByDate,第 21 行
    列名 '##t1' 无效。
      

  6.   

    额,打少了一点点,用select * from ##t1替代最后一行select ##t1
      

  7.   

    ALTER  proc [dbo].[proc_searchByDate](@starttime datetime,@endtime datetime,@webid char(17),@sort varchar(50),@userid char(17))
    as
     
    declare @sqlstr varchar(4000)
    declare @sqlwhere varchar(4000)
    declare @sql varchar(4000)
    if @webid <> null and @webid <>'' and @webid <>'-1'
    begin
    set @sql=' webid,'
    set @sqlwhere=' where webid='''+@webid+''''
    end
     
    set @sqlstr='
    select'+@sql+' CONVERT(varchar(10) ,enterdate,120) enterdate,COUNT(*) c1,SUM(dialoguenum) d1 into ##t1
    from tb_chat_Visitors  where userid='''+@userid+'''
    enterdate between '''+CONVERT(varchar(10), @starttime,120)+'''  and '''+CONVERT(varchar(10), @endtime,120)+''' 
    group by '+@sql+'CONVERT(varchar(10) ,enterdate,120)'
    EXEC (@sqlstr)这段代码里面,把where 条件中,先注销掉日期的筛选条件,看看纯userid能否出来数据,然后再注销userid,看看日期能否出来,逐个排查