日期:2014-05-18  浏览次数:20425 次

变列查询的问题
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 处理,使用 动态列 和表 好像只能用上面那种