2014-08-29 62 views
0

我有一個審計表具有多列,選擇列是其包含的值的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

回答

0

這並不是不可能的,但生成這種結果的查詢會很複雜,並且需要動態生成SQL語句。

過濾顯示哪些列應該是您前端的工作。對於任何其他系統來說,依賴具有動態列數的結果集也很困難。

相關問題