如何在 SQL 中的 WHERE 子句中动态调用列
How to call a column dynamically in the WHERE clause in SQL
我正在尝试找出如何调用 table 中的列,其中列名与声明变量的值相匹配。在此示例中,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)
我正在尝试找出如何调用 table 中的列,其中列名与声明变量的值相匹配。在此示例中,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)