变列查询的问题
CREATE TABLE #TestTbl
(
col1 VARCHAR(10)
, col2 VARCHAR(10)
)
INSERT INTO #TestTbl VALUES ( 'a ', 'b ')
INSERT INTO #TestTbl VALUES ( 'c ', 'd ')
第一种方法:
DECLARE @strSQL NVARCHAR(1000), @Colum VARCHAR(100), @Value VARCHAR(10)
SELECT @Colum = 'col2 ', @Value = 'b '
SELECT @strSQL = ' SELECT * FROM #TestTbl WHERE ' + @Colum + ' = ' ' ' + @Value + ' ' ' '
EXEC sp_executesql @strSQL
变成第二种方法:
DECLARE @Colum VARCHAR(100), @Value VARCHAR(10)
SELECT @Colum = 'col1 ', @Value = 'a '
SELECT * From #TestTbl WHERE .... 这种格式 ,结果不变 ,急
------解决方案--------------------SELECT * From #TestTbl WHERE
case @Colum
when 'col1 ' then col1
when 'col2 ' then col2
end= @Value
------解决方案--------------------DECLARE @Colum VARCHAR(100), @Value VARCHAR(10)
SELECT @Colum = 'a ', @Value = 'a '
SELECT * From #TestTbl WHERE @Colum=@Value
这样能选出来结果 , @Colum 作为字符处理了,没作为column 处理,使用 动态列 和表 好像只能用上面那种