如下表:
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...