Sql server 如何在子查询中将SELECT的值用作列名

Sql server 如何在子查询中将SELECT的值用作列名,sql-server,subquery,Sql Server,Subquery,我请求你的帮助,因为我不能决定这个问题的解决办法。我正在使用SQL Server 2014 我有这样一个问题: SELECT event_id, CONCAT ('week', CHARINDEX('Y', weeks), '_date') AS num FROM CT_EVENT 返回表单的周数:week1\u date 此值是另一个表中的列的名称。我想做的是一个子请求来获取其中的值 SELECT week1_date FROM CT_CONFIG 我在寻

我请求你的帮助,因为我不能决定这个问题的解决办法。我正在使用SQL Server 2014

我有这样一个问题:

SELECT 
    event_id, 
    CONCAT ('week', CHARINDEX('Y', weeks), '_date') AS num 
FROM 
    CT_EVENT
返回表单的周数:
week1\u date

此值是另一个表中的列的名称。我想做的是一个子请求来获取其中的值

SELECT week1_date 
FROM CT_CONFIG
我在寻找一种方法,在列名中“caster”一个字符串,而不实际查找

提前感谢您,并随时提供任何补充资料


Jérémy

您不能在这里使用子查询,您需要使用动态sql,类似这样的东西

Declare   @ColumnName SYSNAME
        , @Sql NVARCHAR(MAX);

SELECT @ColumnName =  CONCAT ('week', CHARINDEX ('Y', weeks), '_date')  
FROM CT_EVENT

SET @Sql = N' SELECT ' + QUOTENAME(@ColumnName) + N' FROM CT_CONFIG;'

Exec sp_executesql @Sql;

您不能在这里使用子查询,您需要使用动态sql,类似这样的

Declare   @ColumnName SYSNAME
        , @Sql NVARCHAR(MAX);

SELECT @ColumnName =  CONCAT ('week', CHARINDEX ('Y', weeks), '_date')  
FROM CT_EVENT

SET @Sql = N' SELECT ' + QUOTENAME(@ColumnName) + N' FROM CT_CONFIG;'

Exec sp_executesql @Sql;

工作,但只有一排,我有52个星期。你有什么解决办法吗?@JérémyBloy你在最初的问题中只提到了一个,然后再发布一个问题,提出确切的要求,有人会帮助你,如果不在问题中加上我的标签,我会尝试回答。有效,但只有一行,我有52周的时间。你有什么解决办法吗?@JérémyBloy你在最初的问题中只提到了一个问题,在另一个问题上贴上确切的要求,有人会帮助你,如果不在问题中加上我的标签,我会尽力回答。