
sql分页显示的问题
字段AAABBCDDEEEFG我想得到3页结果,分别为ADGADBECECEF也就是说我想每页有3大条数据(A,B,C)不管有多少小条数据,sql该怎么写。...
字段A
A
A
B
B
C
D
D
E
E
E
F
G
我想得到3页结果,分别为
A D G
A D
B E
C E
C E
F
也就是说我想每页有3大条数据(A,B,C)不管有多少小条数据,sql该怎么写。 展开
A
A
B
B
C
D
D
E
E
E
F
G
我想得到3页结果,分别为
A D G
A D
B E
C E
C E
F
也就是说我想每页有3大条数据(A,B,C)不管有多少小条数据,sql该怎么写。 展开
2个回答
展开全部
lz,这个问题其实和普通的分页问题是一样的,只是规则不同而已,普通的分页是以每页条数来分的,比如每页20条,正排前20条,倒排前20条,这样两页的数据就出来了,这样通过拼接sql可以完成,这种分页函数方法,网上多了去了。你这个问题呢只是变了角度,其实本质是一样的,你这里是以分类数来决定分页。我写个简单的sql给你看一下
create table zhidao1121
(id char(1));
insert into zhidao1121
select 'A'
UNION ALL
SELECT 'A'
UNION ALL
SELECT 'B'
UNION ALL
SELECT 'B'
UNION ALL
SELECT 'C'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'D'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'E'
UNION ALL
SELECT 'F'
UNION ALL
SELECT 'G';
SELECT T1.id,T2.RN FROM zhidao1121 T1,
(SELECT T.ID,ROW_NUMBER()OVER(ORDER BY ID)RN FROM(
SELECT DISTINCT ID FROM zhidao1121)T)T2 WHERE T1.ID=T2.id;
--结果
A 1
A 1
B 2
B 2
C 3
D 4
D 4
E 5
E 5
E 5
F 6
G 7
或者还可以这样
SELECT T1.id,T2.RN%3+1 FROM zhidao1121 T1,
(SELECT T.ID,ROW_NUMBER()OVER(ORDER BY ID)RN FROM(
SELECT DISTINCT ID FROM zhidao1121)T)T2 WHERE T1.ID=T2.id;
--结果
A 2
A 2
B 3
B 3
C 1
D 2
D 2
E 3
E 3
E 3
F 1
G 2
这样写希望对你理解有帮助,有问题再追问吧,望采纳。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询