为了方便进行报表的动态生成,如何把数据库的表映射成为矩阵,然后进行矩阵运算。在把最后的矩阵结果映射到表中。需要说明一切运算都限制在SQLserver集成开发环境中进行,而不是在高级程序语言中实现。更明确点说是 在语句select ColomnName from [tableName] where  Id= @i;中把ColomnName 能够通过列索引变量j来动态确定所选择的列

解决方案 »

  1.   

    要动态指定列,无非就是采用动态语句罢了.
    set @sql='select '+@columnname+' from tb where id='+@id
    exec(@sql)
      

  2.   

    --是需要动态查询某列的值吗?
    --下面例子为查询某行某列某表的值
    --需要改动的是表名,@i,@j/*运行环境 SQLSERVER2005*/
    -- 构造数据
    create table Tb
    ( a int null, 
      b int null,
      c int null,
      d int null
    )insert into Tb select 1,5,3,2
    insert into Tb select 2,4,12,12
    insert into Tb select 1,30,12,34
    insert into Tb select 45,23,9,2
    insert into Tb select 16,5,89,2
    insert into Tb select 21,5,32,2declare @tbname varchar(100), -- 表名
            @row    int,          -- 行数
            @column int,          -- 列数
            @data   varchar(100)  -- 返回值-- 手动为变量赋值
    --**********--
    select @tbname ='Tb' --'Tb' 
    select @row = 1
    select @column = 1
    --**********---- 判断行列值是否超出表范围
    if ( @row > ( select count(1) from Tb ) )
    begin
        print '输入行大于表最大行数'
    end
    --select @tbname = 'tempdb..' + @tbname --加上所在数据库
    if ( @column > ( select max(column_id) 
                     from sys.columns --tempdb.sys.columns 
                     where object_id = object_id(@tbname) ) )
    begin 
        print '输入列大于表最大列数'
    end-- 定义动态SQL 
    declare @sql nvarchar(2000),
            @parm nvarchar(500),
            @col_name varchar(100)select @col_name = name 
    from   sys.columns --tempdb.sys.columns 
    where object_id = object_id(@tbname)
          and column_id = @columnselect @parm = '@val varchar(10) output'select @sql = ' select @val = ' + @col_name +
                  ' from   ( select *,
                                    row_number()over(order by getdate()) as ordr
                             from ' + @tbname +
                         ' ) a 
                    where  ordr = ' + cast(@row as varchar) 
    exec sp_executesql @sql,
                       @parm,
                       @data output
    select @data
      

  3.   

    #3楼 abuying 是高手。强悍,能不能编写一个 两个矩阵相乘(加)的存储过程 把代码贴出来。供我研究研究。谢谢 非常感激