比如一列index,其余比如有上百column的数据,然后我要对这些column进行相同的index进行加总,如果列少,我直接可以:
select index, sum(c1) c1, sum(c2) c2,sum(c3) c3 from data group by index
但column有上百个 我总不可能一个个c1 c2....c100这样列出来吧,有什么好办法吗?
Declare @sql Varchar(8000)
Set @sql='Select index,'
Select @sql=@sql+'sum('+name+') As '+name+',' From sys.columns
Where object_id=object_id('data')
And name like 'c%'
Set @sql=STUFF(@sql,LEN(@sql),1,'')+' From data Group By index'
Exec(@sql)
--把data表所有c开头的栏位,组成一个sum的字符串,然后执行