是介个意思么?IF OBJECT_ID('tempdb..#testA','U') IS NOT NULL DROP TABLE #testA
CREATE TABLE #testA
(
ID INT IDENTITY(1,1)
,ColNameEN VARCHAR(20)
,ColNameCN NVARCHAR(200)
)
INSERT INTO #testA
VALUES  ('Col1',N'列名A'),('Col2',N'列名B'),('Col3',N'列名C'),('Col4',N'列名D'),('Col5',N'列名E')IF OBJECT_ID('tempdb..#testB','U') IS NOT NULL DROP TABLE #testB
CREATE TABLE #testB
(
Col1 VARCHAR(10)
,Col2 VARCHAR(10)
,Col3 VARCHAR(10)
,Col4 VARCHAR(10)
,Col5 VARCHAR(10)
)
INSERT INTO #testB
VALUES  ('A','B','C','D','E'),('1','2','3','4','5')
SELECT * FROM #testBDECLARE @SqlA NVARCHAR(MAX),@SqlB NVARCHAR(MAX)
SELECT @SqlA=ISNULL(@SqlA+',','')+'['+ColNameEN+']'+' AS ['+ColNameCN+']' FROM #testA SELECT @SqlB=N'SELECT '+@SqlA+'
FROM #testB'
EXEC(@SqlB)/*EN
Col1 Col2 Col3 Col4 Col5
A B C D E
1 2 3 4 5
*//*
列名A 列名B 列名C 列名D 列名E
A B C D E
1 2 3 4 5
*/

解决方案 »

  1.   


    declare @str varchar(5000)
    , @zd varchar(20)
    set @str=''
    set @zd=''
    declare xx cursor 
    for select rtrim(英文)+' as '+rtrim(中文) from A where zd in (select name from syscolumns where id=object_id('B'))
    open xx
    fetch next from xx into @zd
    while @@fetch_status=0
    begin
    set @str=@str+','+@zd
    fetch next from xx into @zd
    end
    close xx 
    deallocate xx
    set @str=right(@str,len(@str)-1)
    exec('select '+@str+' from B')