動態SQL對各列進行求和運算

2021-04-12 14:12:51 字數 799 閱讀 1035

如下表:

id  f1    f2    f3   f4   f5   f6......

1  a     b     12   25   10   20

2  a     b     20    5    10   21

3  c     d     12    123  1   21

我想達到如下效果

將f1,f2相同記錄進行合併後只保留一條(列出所有字段),並對f3進行sum求和

請問sql語句該怎麼寫?

--動態sql

create table tb(id int,f1 varchar(10),f2 varchar(10),f3 int,f4 int,f5 int,f6 int)

insert into tb select  1,'a','b',12,25,10,20

union all select 2,'a','b',20,5,10,21

union all select 3,'c','d',12,123,1,21

godeclare @sql varchar(8000)

set @sql=''

select @sql=@sql+',sum('+name+') as '+name from syscolumns where id=object_id('tb') and name not in('id','f1','f2') order by colid     --寫不要彙總的列名

exec('select f1,f2'+@sql+' from tb group by f1,f2')

drop table tb 

sql動態列查詢

最近開發是遇到sql查詢時,以查詢結果作為列名,也就是動態列查詢,案列如下 declare sql varchar max set sql select fname 銷售經理,fnumber as 客戶代號 sum case when 月份 01 then bordlocal else 0 end ...

SQL裡動態生成列

一般這種比較複雜一點都用乙個儲存過程來寫比較好。因為單一的檢視不能滿足我們的需求。類似這種,有規律可循的列。如果按照原始的方法 case when then end。我估計是又繁瑣又累,純粹的體力活啊。其實我最開始的時候就是醬寫的 不過好在有大神師傅的指點,簡單多了,而且這個區間值是可以改變的。如下...

mysql動態sql無效 sql動態列的問題?

一種效率並不高的方案,我想想看有沒有更加高效的方法,想到後在來編輯 create table ttd pname varchar 30 pcode int,cname varchar 30 ccode int,yname varchar 30 ycode int insert into ttd pn...