为了方便进行报表的动态生成,如何把数据库的表映射成为矩阵,然后进行矩阵运算。在把最后的矩阵结果映射到表中。需要说明一切运算都限制在SQLserver集成开发环境中进行,而不是在高级程序语言中实现。更明确点说是 在语句select ColomnName from [tableName] where Id= @i;中把ColomnName 能够通过列索引变量j来动态确定所选择的列
解决方案 »
- 请教各位前辈,关于SQL SERVER里处理字符串的问题
- 这样的sql语句该怎么写?
- 没分数了,SQL Server 2005高手帮帮忙
- 在Oracle 中有类似 sqlserver 中的unicode() 的函数吗?是什么函数,语法是什么用的?
- 求一SQL语句,急!!直接在SQLSERVER中同步将一个表中的两个字段的值插入到另外一个数据库中的想对应的两字段中
- 谁能帮我一下啊,关于SQL、数据库快速处理!
- 这样的情况,我应该如何设计数据库?
- 将 varchar 转换为数据类型 numeric 时出现算术溢出错误。
- SQL更改主键.是不是要把原先的主键删除,在添加主键?
- 急需帮助,高手给帮帮忙啊!
- 查看SQL Server日志的问题
- SQL server 2000 運行時會突然中斷
set @sql='select '+@columnname+' from tb where id='+@id
exec(@sql)
--下面例子为查询某行某列某表的值
--需要改动的是表名,@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