如何通过变量动态确定 select 的字段

XieeEvil 2010-11-23 11:26:29
为了方便进行报表的动态生成,如何把数据库的表映射成为矩阵,然后进行矩阵运算。在把最后的矩阵结果映射到表中。需要说明一切运算都限制在SQLserver集成开发环境中进行,而不是在高级程序语言中实现。

更明确点说是 在语句select ColomnName from [tableName] where Id= @i;中把ColomnName 能够通过列索引变量j来动态确定所选择的列
...全文
110 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
XieeEvil 2010-11-24
  • 打赏
  • 举报
回复
#3楼 abuying 是高手。强悍,能不能编写一个 两个矩阵相乘(加)的存储过程 把代码贴出来。供我研究研究。谢谢 非常感激
-晴天 2010-11-23
  • 打赏
  • 举报
回复
要动态指定列,无非就是采用动态语句罢了.
set @sql='select '+@columnname+' from tb where id='+@id
exec(@sql)
-晴天 2010-11-23
  • 打赏
  • 举报
回复
恐怕还要更更明确一些才能回答.
abuying 2010-11-23
  • 打赏
  • 举报
回复
--是需要动态查询某列的值吗?
--下面例子为查询某行某列某表的值
--需要改动的是表名,@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,2

declare @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 = @column

select @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

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧