日期:2014-05-19  浏览次数:20604 次

再发一贴:如何将某列值作为查询内容?期望高手现身~!
举个简单的例子,比如table1有a、b、c三列
select   *   from   table1
-------结果:-----------------------
a                                               b                         c
table1.b                                 如此                   很好
table1.c                                 这样                   不错          
------------------------------------

而我现在要得到这样的结果
-------结果:-----------------------
x                                                                 b                         c
如此       //即该行table1.b的值             如此                   很好
不错       //即该行table1.c的值             这样                   不错
------------------------------------

------解决方案--------------------
继续等待....
--------------
看来我的方法不行,
改了一下,改成动态的,不知是否符合你的要求,如果不行,请说明原因,别继续等待...
哈哈

create table table1(a varchar(10),b varchar(10),c varchar(10))
insert table1 select 'table1.b ', '如此 ', '很好 '
union all select 'table1.c ', '这样 ', '不错 '

--select case a when 'table1.b ' then b else c end as x,b,c from table1

declare @sql varchar(1000)
declare @x varchar(800)
set @x= 'case a '
select @x=@x+ ' when ' ' '+a+ ' ' ' then ' +a from (
select distinct a from table1) tmp
set @x=@x+ ' end as x '
set @sql= 'select '+@x + ',b,c from table1 '
--print @sql
exec(@sql)