存贮过程中建一个临时表,如何检测是否存在某个字段名呢?
我的目的是,将一个表汇总后横向展开,所以在临时表中,加个很多列,但是我必须要检测一下,我的列是不是全了。
因为一些编码经常会加,但是我的程序就要同步更改。如,此时机台号,产量是字段名
机台号,产量
aa,100
bb,100
aa,100
cc,120我要得到下列表,此时aa,bb,cc变成字段名了。
aa,bb,cc
200,100,120我要检测的就是,临时表的列中,是否包含了全部的机台号,
如果原始表中有:
dd,500
将我的临时表中,要同步增加一个dd的字段。
问题是,我的代码中,如何检测出,临时表的列名全不全呢?
我的目的是,将一个表汇总后横向展开,所以在临时表中,加个很多列,但是我必须要检测一下,我的列是不是全了。
因为一些编码经常会加,但是我的程序就要同步更改。如,此时机台号,产量是字段名
机台号,产量
aa,100
bb,100
aa,100
cc,120我要得到下列表,此时aa,bb,cc变成字段名了。
aa,bb,cc
200,100,120我要检测的就是,临时表的列中,是否包含了全部的机台号,
如果原始表中有:
dd,500
将我的临时表中,要同步增加一个dd的字段。
问题是,我的代码中,如何检测出,临时表的列名全不全呢?
go
create table #(a int ,b int ,c int)
select name
from tempdb..syscolumns
where object_id('tempdb..#')=ID
/*
name
a
b
c
*/
insert #test select 'aa',100
insert #test select 'bb',100
insert #test select 'aa',100
insert #test select 'cc',120declare @sql varchar(500)
select @sql=isnull(@sql+',','')+机台号 from(select 机台号 from #test group by 机台号) a order by 机台号
exec( 'select '+@sql+
' from #test '+
'pivot (sum(产量) for 机台号 in('+@sql+')) pvt'
)
aa bb cc
----------- ----------- -----------
200 100 120(1 行受影响)可以动态显示