如何使用一个sql查询中的值作为另一个sql查询中的列名(SQL服务器)

问题描述 投票:0回答:1

我正在寻找一种方法将一个sql的值显示为另一个sql的列名。我在网上看到很多关于使用数据透视表或交叉表的例子。我尝试了两者,但无法真正找到出路。如果有人可以通过以下方式给我正确方向的提示:

enter image description here

如您所见,我想添加“Kledingmaat”作为标题而不是 usr1 等。

更多信息: 我有一个名为 personen 的表,该表有 10 个名为(USR1、USR2、USR3、USR4、USR5、USR6、USR7、USR8、USR9、USR10)的列,然后我有一个名为 uservelden 的表,其中包含以下列(VOLGNR、USERTABELNAAM和字幕字符串)。

我怎样才能达到以下结果: enter image description here

sql
1个回答
0
投票
DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',usr' + CAST(Row_Number() OVER (ORDER BY (SELECT NULL))  as Varchar(3)) + ' as '+ QUOTENAME(c.CAPTIONSTRING) 
            FROM uservelden c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

SELECT @cols

set @query = 'SELECT ' +  @cols + ' FROM personen '

execute(@query)
© www.soinside.com 2019 - 2024. All rights reserved.