SQL如何根据变量值动态查询表中名称匹配的对应列
方案1:使用动态SQL实现(推荐)
这种方式可以灵活匹配任意符合格式的列,不需要提前枚举所有可能的月份列:
DECLARE @Var varchar(50) SET @Var = '201911' -- 拼接动态查询语句 DECLARE @SQL nvarchar(max) SET @SQL = N'SELECT DPS_' + @Var + N' AS TargetDPS FROM Tbl_B WHERE Campaign_ID = 1' -- 执行动态语句 EXEC sp_executesql @SQL
注意:如果@Var的取值来自用户输入,需要先做格式校验,确认输入为6位数字格式,避免SQL注入风险
方案2:使用CASE WHEN静态实现(适合列数固定且较少的场景)
如果你的DPS_月份列数量有限且固定,可以不用动态SQL,直接枚举所有列做匹配:
DECLARE @Var varchar(50) SET @Var = '201911' SELECT CASE @Var WHEN '201911' THEN DPS_201911 WHEN '201910' THEN DPS_201910 -- 其余月份列按相同格式补充即可 END AS TargetDPS From Tbl_B WHERE campaign_Id = 1
内容的提问来源于stack exchange,提问作者SusanD
相关产品推荐
相关产品推荐

