现我有一张主题表主题计数表 ThemeNum, 字段:ID (自增) TID(主题表ID),Num(计数),
现在要求就是查询 ThemeNum表 如果遇到TID及主题表ID一样则累加并使用row_number() OVER 分页。
主题计数表
ID | TID | 数量 |
1 | 1 | 1 |
1 | 1 | 1 |
1 | 2 | 2 |
1 | 2 | 2 |
要求显示
TID | 数量 |
1 | 2 |
2 | 4 |
求大神们辅助。这个分页的sql怎么写
这...汇总而已啊。
select TId,sum(数量) from T group by TId
求总数量:
select count(TId) from T group by TId
分页:
select * from (select TId,count(数量),rownum=Row_number() over (order by Tid) from T group by TId) as t where t.rownum between 1 and 10
如果安装tid来order by确实可以实现,但是如果ID排序就不能达到理想效果,不过这样查询出来确实能达到效果。先谢了
--取出表A中第30到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的 ) 面试常考的分页语句
--第一种 not in --先查询一部分数据排序,排除在外;适合用与sql server 2000及更高版本 select top 10 * from Info where ID not in (select top 30 ID from Info order by ID)order by ID --第二种 先查出一部分数据 排序 用Max找出最大Id 然后将其Max(ID)最大排除在外;适合用与sql server 2000及更高版本 select top 10 * from Info where ID > ( select ISNULL(MAX(ID),0) from ( select top 30 ID from Info order by ID ) a ) order by ID --第三种 row_number --把所有的数据查询出来,进行重新编号,通过where条件进行筛选数据;适用于sql server2005及更高版本 select top 10 * from (select row_number() over (order by ID) as rowId,* from Info)t where rowId>30 --第四种 offset fetch --offset后参数 越过多少条 fetch next后参数 取多少条;适用于sql server2012及其更高的版本 select * from Info order by ID offset (30)row fetch next 10 rows only
博客的一部分,希望帮到你!
很有启发意义。感谢了
没太明白意思 如果只是查询ID和TID相等的个数