RT,表里有26列,其中有6列数据全为0,搜索的时候想只显示不为0的20列,应该怎么写SELECT语
------解决思路----------------------
select * from cte
declare @sql varchar(max)='',@sql1 varchar(max)=''
if (select SUM(col1) from cte)>0
set @sql1=@sql+',col1'
if ( select SUM(col2) from cte )>0
set @sql1=@sql1+',col2'
if ( select SUM(col3) from cte )>0
begin
set @sql1=@sql1+',col3'
end
set @sql='select '+stuff(@sql1,1,1,'')+ ' from cte'
exec( @sql)
col1 col2 col3
----------- ----------- -----------
0 2 0
0 0 0
2 0 0
0 0 0
(4 行受影响)
col1 col2
----------- -----------
0 2
0 0
2 0
0 0
(4 行受影响)
对照下。如果不知道列名就需要在SYS.ALL.COLNUM里面读取了。