如何在 SQL 中的 WHERE 子句中动态调用列

问题描述

我想弄清楚如何调用表中列名与声明变量的值相匹配的列。在此示例中,Tbl_B 具有标记为 DPS_YYYYMM 的列,例如“DPS_201911”、“DPS_201910”、“DPS_201909”...。我需要找到一种方法来从 Tbl_B 中为与 @Var 匹配的给定 YYYYMM 调用正确的列。你能帮忙吗?

Campaign_ID DPS_201911 DPS_201910
1 345 123
DECLARE @Var varchar(50)
SET @Var = '201911'

 SELECT ?????
 From Tbl_B
 WHERE campaign_Id = 1 
 

解决方法

像下面这样使用Dynamic sql

DECLARE @Var varchar(50),@sql varchar(max)
SET @Var = '201911'
set @Var='DPS_'+ @Var;
set @sql='SELECT '+@Var+'
From Tbl_B
WHERE campaign_Id = 1'
EXEC (@sql)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...