选择列是其包含的值的SQL Server

问题描述:

我有一个审计表具有多列,选择列是其包含的值的SQL Server

可以说

Create table TestTable (ID int, Col1 varchar(10), Col2 varchar(10), Col3 varchar(10), Col4 varchar(10), Col5 varchar(10), Col6 varchar(10), Col7 varchar(10)); 

insert into TestTable values(1,'Ram',null,null,null,null,null,null); 
insert into TestTable values(2,null,1,null,'2',null,null,null); 
insert into TestTable values(3,null,1,null,'2',null,null,null); 

现在我想如果用户运行下面的查询

Select *[]* From TestTable where ID=1 

然后输出应该是这样的。

**ID Col1 
1 Ram** 

和用户查询以下

Select *[]* From TestTable where ID=2 

运行,那么输出应该来这个样子。

**ID Col2 Col4 
1 1  2 

列是不应该是静态的,如果在列中应该有行的值。

任何想法如何获得结果,我需要动态选择列。

+1

SQL查询返回一组定义良好的列。除非使用动态SQL,否则不能有返回可变数量列的查询。 – 2014-08-29 20:49:45

这并不是不可能的,但生成这种结果的查询会很复杂,并且需要动态生成SQL语句。

过滤显示哪些列应该是您前端的工作。对于任何其他系统来说,依赖具有动态列数的结果集也很困难。