日期:2014-05-18  浏览次数:20612 次

如何建立临时表替换字段名称
如题,有一个表table1,有200多个字段,比如G101_MAX,G101_MIN,G202_MAX,G202_MIN,G301_MAX,G301_MIN,G501_MAX,G501_Min.............如果查询出来,显示的列表题头字段名称全是英文

还有一个表tablename,这个表中就两个字段,一个是Name,一个是Code。这个表中存的数据举例如下
Name Code
分配率 G101
成功率 G202
失败率 G301
上行率 G501
下行率 G601
上线率 G701
下线率 G801

我想创建一个临时表,把G101、G202、G301。。。。。。的字段名称都换成从table2表中提出的中文名称,这样我查询出的列表题头字段就能转成中文了。比如分配率_max,分配率_min,成功率_max,成功率_min,上行率_max,上行率_min,上线率_max,上线率_min。。。。。。。
怎么转换呢,谢谢,在线等。如果问题描述不清,我接下来可以补充。

------解决方案--------------------
SQL code

首先获取某一个表的所有字段 
select name from syscolumns where id=object_id('表名')
然后再与你的表tablename关联,把每个字段换成name,然后再定义一个字符串变量,把创建白哦的语句拼接出来,再执行

------解决方案--------------------
SQL code

DECLARE @s NVARCHAR(max)
SELECT @s=ISNULL(@s+',','select ')+a.Name+' as '+REPLACE(a.Name,b.Code,b.NAME) 
FROM syscolumns AS a 
    inner JOIN  tablename AS b ON a.Name LIKE b.Code+'_%'
WHERE ID=OBJECT_ID('table1')

EXEC(@s+' from table1')