如题,有一个表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。

怎么转换呢,谢谢,在线等。如果问题描述不清,我接下来可以补充。

解决方案 »

  1.   


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

  2.   


    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')
      

  3.   


    思路就是那样的啊,这个没有现成的表,也没法测试:declare @str varchar(max)
    set @str=''
    select @str=@str+','+name+' int' from (
    select b.name from syscolumns a inner join tablename b on a.name=b.code)c
    where id=object_id('table1')--你然后把@str print出来看看,看看哪些多余的就删掉,反正最后拼接的语句是你的创建表的语句
      

  4.   


    create table table1
    (G101 int,
    G202 int,
    G301 int,
    G501 int,
    G601 int,
    G701 int,
    G801 int
    )
    go
    ----drop table table1DECLARE @v sql_variant 
    SET @v = N'分配率'
    EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G101'
    SET @v = N'成功率'
    EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G202'
    SET @v = N'失败率'
    EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G301'
    SET @v = N'上行率'
    EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G501'
    SET @v = N'下行率'
    EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G601'
    SET @v = N'上线率'
    EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G701'
    SET @v = N'下线率'
    EXECUTE sp_addextendedproperty N'MS_Description', @v, N'SCHEMA',N'dbo', N'TABLE', N'table1', N'COLUMN', N'G801'select * from fn_listextendedproperty ('MS_Description','SCHEMA','dbo','table','table1','COLUMN',null)
      

  5.   

    a.Name是那两百多个字段吗?b.Code,b.NAME就是table1.code,table1.name
      

  6.   


    '+name+' int' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~???????这个怎么会有int呢