修改一下存储过程
CREATE procedure dbo.statSingleVisualize1as
begindeclare @sql varchar(8000)
set @sql='select sn,[name],theTime'
select @sql=@sql+',sum(case category when '''+category +''' then deduct else 0 end) ['+category+']'
from (select distinct category from tbVisualize) as a
select @sql=@sql+' from tbVisualize group by sn ,[name],theTime'exec(@sql)end

解决方案 »

  1.   

    --存储过程得修改一下,不然调用没结果
    CREATE procedure dbo.statSingleVisualize1
    as
    begin
    set nocount on
    declare @sql varchar(8000)
    set @sql='select sn,[name],theTime'
    select @sql=@sql+',sum(case category when '''+category +''' then deduct else 0 end) ['+category+']'
    from (select distinct category from tbVisualize) as a
    select @sql=@sql+' from tbVisualize group by sn ,[name],theTime'
    exec(@sql)
    set nocount off
    end
    GO
      

  2.   

    'VB中的调用方法:dim rs as new adodb.recordset
    dim conn$conn=数据库连接字符串
    rs.open "exec statSingleVisualize1",conn,1,1
    'ASP中的调用方法:set rs=server.createobject("adodb.recordset")
    conn=数据库连接字符串
    rs.open "exec statSingleVisualize1",conn,1,1
      

  3.   

    有参数也一样:rs.open "exec statSingleVisualize1 参数",conn,1,1
      

  4.   

    zjcxc(邹建) :你好
    我是这样做的
    alter procedure dbo.statSingleVisualize1
    (
    @beginTime datetime,
            @endTime   dateTime,
            @theSn     varchar(30))as
    begin
    set nocount on
    declare @sql varchar(8000)
    set @sql='select sn,[name],theTime'
    select @sql=@sql+',sum(case category when '''+category +''' then deduct else 0 end) ['+category+']'
    from (select distinct category from tbVisualize) as a
    select @sql=@sql+' from tbVisualize
    where sn='+@theSn+' and theTime between '+@beginTime+' and '+@endTime+'
     group by sn ,[name],theTime'exec(@sql)
    set nocount off
    end
    GO调用:exec dbo.statSingleVisualize1 '2004-1-1','2004-1-10','2003430002'错误:
    从字符串转换为 datetime 时发生语法错误。再请教,谢谢!
      

  5.   

    --日期类型要转换,下面的:alter procedure dbo.statSingleVisualize1
    @beginTime datetime,
    @endTime   dateTime,
    @theSn     varchar(30)
    as
    begin
    set nocount on
    declare @sql varchar(8000)
    set @sql='select sn,[name],theTime'
    select @sql=@sql+',sum(case category when '''+category +''' then deduct else 0 end) ['+category+']'
    from (select distinct category from tbVisualize) as a
    select @sql=@sql+' from tbVisualize
    where sn='+@theSn+' and theTime between '''
    +convert(varchar,@beginTime,120)
    +''' and '''+convert(varchar,@endTime,120)+'''
     group by sn ,[name],theTime'exec(@sql)
    set nocount off
    end
    GOexec dbo.statSingleVisualize1 '2004-1-1','2004-1-10','2003430002'
      

  6.   

    如果表结构是:
    classID  weekday  sn subject
    1         1        1  语文
    1         1        2  数学
    1         1        3  化学
    ......
    1         1        6  体育
    1         2        1  物理
    1         2        2  英语       
    ......
    1         5        6  政治其中weekday是星期,sn是课程节次,subject 是课程想得到一个课程表
            1     2     3     4     5     6
    星期一
    星期二
    ...请问如何实现?
    刚入门,问题多,谢谢!