首页 新闻 搜索 专区 学院

如何对分页查询结果进行统计汇总

0
[已解决问题] 解决于 2013-08-28 14:01

有一条SQL语句从数据库(SQL Server)中检索数据,实现分页查询数据

查询SQL语句:select 字段1,字段2,字段3,字段4 from tab1 left join tab2 on tab1.字段1 = tab2.字段1 order by 字段2

要实现对上面的SQL语句查询结果的某一页进行统计汇总,汇总语句(统计和分组字段由用户自定义)如下:
汇总SQL语句:select sum(字段3),字段4 from (上面查询语句的第n页结果集) group by 字段4
将汇总后的数据以统计图的形式展示

问题补充:

实现功能要求如下:
1、用户输入查询的SQL语句
2、针对用户输入的语句输出报表,可以实现翻页
3、用户可以针对某一页的数据设计汇总与分组字段产生统计图(统计图使用Ext js)
分页功能的实现实现方式是根据用户的SQL语句把数据全部查询出来,然后从ResultSet读取某一页的数据返回到前台页面。
但要实现对某一页的数据进行汇总时,如果使用select sum(字段3),字段4 from (用户的查询语句) group by 字段4,如果用户的查询语句包含order by,此用户的查询语句是无法放入到子查询中,且无法组织成分页语句,请问对某一页的数据进行汇总有什么方法没?

泱泱的主页 泱泱 | 初学一级 | 园豆:2
提问于:2013-08-15 11:34
< >
分享
最佳答案
0

我的小伙伴,这个是你需要的吗:

-- 得到第 49 页数据,每页 15 条数据
with #pager2 as
(
    with #pager as 
    (

select tab1.字段1,字段2,字段3,字段4,
ROW_NUMBER() OVER(Order By 字段2) as rowid
from tab1 left join tab2 on tab1.字段1 = tab2.字段1

    )
    select ID,Title from #pager where rowid between (15 * (50-1)+1) and 15 * 50
) 
select sum(字段3),字段4 from #pager2 group by 字段4
奖励园豆:5
寻自己 | 菜鸟二级 |园豆:285 | 2013-08-15 17:00

如果SQL语句中包含order by 语句会出现以下错误:

消息 1033,级别 15,状态 1,第 21 行
除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。
消息 156,级别 15,状态 1,第 22 行
关键字 'from' 附近有语法错误。

泱泱 | 园豆:2 (初学一级) | 2013-08-15 20:28

@泱泱: 你把你两个表的建表语句发上来,我写最终的sql给你

寻自己 | 园豆:285 (菜鸟二级) | 2013-08-16 10:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册