说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

sql server 计算每32行的各列的平均值 语句怎么写,数据如下所示,求大神

编辑:说三道四文库 发布时间:2018-09-19 01:18
HTML文档下载 WORD文档下载 PDF文档下载
SQL Server

--刚拼写了一个,但是不完美。不过可以用。
use test1
go
create table t
(
id int,
rid int,
did int
)
insert into t select 1,2,3
union all
select 2,3,4
union all
select 3,4,5
go

declare 
@str as varchar(max)='select ',
@tb as varchar(20)='t'

select 
@str=@str+
' avg('+b.name+'),' 
from sys.tables as a
inner join 
sys.columns as b
on a.object_id=b.object_id
and a.name=@tb

set @str=LEFT(@str,DATALENGTH(@str)-1)+' from '+@tb
exec (@str)
类似这样的:

DECLARE @N INT
WHILE @N < 10
BEGIN

SELECT AVG(COL1) ,AVG(COL2) ,AVG(COLM) 
FROM 
(
SELECT AVG(COL1) ,AVG(COL2) ,AVG(COLM) , ROW_NUMBER() OVER (ORDER BY  ID ASC) AS ROWID
 FROM TABLENAME 
) T
WHERE T.ROWID<= 32*@N

SET @N=N+1
END
这个reporting services就很容易实现了,不用写代码,绑定数据源拖拉即可,每页设置成32行,每个数值列下面放一下avg
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘