这是我在使用 STRING_AGG 时遇到的问题。
假设我有一张桌子,#table_A(这是一张临时表)
#table_A
ID CheckColumn 1 GJAHR 2 LMNON
然后我声明两个变量,即。
DECLARE @v1_YYYY varchar(4) DECLARE @v2_MM varchar(4) SET @v1_YYYY = '2022'; SET @v2_MM ='07';
然后我试图生成一个如下所示的字符串:
GJAHR EQ @v1_YYYY AND LMNON EQ @v2_MM
我知道我可以像下面这样使用 STRING_AGG()
DECLARE @sql varchar(100); SELECT @sql = STRING_AGG(x.checkColumn + 'EQ' + '''' + @v1_YYYY + '''' , ' AND ') FROM #table_A
但这会创建以下字符串:
GJAHR EQ @v1_YYYY AND LMNON EQ @v1_YYYY
我在这里缺少什么?
您可以使用case表达式检查 ID 值并决定哪个变量参与连接
case
SELECT @sql = STRING_AGG(checkColumn + 'EQ' + '''' + case when ID = 1 then @v1_YYYY else @v2_MM end + '''' , ' AND ') FROM #table_A