知道总页数,怎么根据目录的页号,求各目录页数?

限量的蓝天 2014-08-08 10:32:55
比如一本书100页,目录,1,3,5,7,9,表a 中存有总数页100, 表B中是目录号 ,a.id=b.id
想得到:
页号 页数
1 2
3 2
5 2
7 2
9 92

我想通过一个视图得到上述的结果,该怎么写呢?
...全文
282 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
t252000 2014-09-11
  • 打赏
  • 举报
回复
问下关于这个的存储过程怎么写
Tiger_Zhao 2014-08-08
  • 打赏
  • 举报
回复
CREATE TABLE A(ID int, PAGES int)
INSERT INTO A VALUES (1,100)

CREATE TABLE B(ID int, SN int, PAGENO int)
INSERT INTO B VALUES(1,1,1)
INSERT INTO B VALUES(1,2,3)
INSERT INTO B VALUES(1,3,5)
INSERT INTO B VALUES(1,4,7)
INSERT INTO B VALUES(1,5,9)

SELECT B1.PAGENO 页号,
B2.PAGENO-B1.PAGENO 页数
FROM B B1
JOIN (SELECT * FROM B
UNION ALL
SELECT ID,
(SELECT MAX(SN)+1 FROM B WHERE B.ID = A.ID),
PAGES+1
FROM A
) B2
ON B2.ID = B1.ID
AND B2.SN = B1.SN+1
WHERE B1.ID = 1

页号          页数          
----------- -----------
1 2
3 2
5 2
7 2
9 92
限量的蓝天 2014-08-08
  • 打赏
  • 举报
回复
表A ID PAGES 1 100 表B,ID为表A中的ID,SN为表B自身的流水号,PAGENO为目录号 ID SN PAGENO 1 1 1 1 2 3 1 3 5 1 4 7 1 5 9
Tiger_Zhao 2014-08-08
  • 打赏
  • 举报
回复
描述不清。
A、B 的内容(和结果一样请用表的方式表示)?
Tiger_Zhao 2014-08-08
  • 打赏
  • 举报
回复
SELECT B1.PAGENO 页号,
B2.PAGENO-B1.PAGENO 页数,
B2.总页数
FROM B B1
JOIN (SELECT *,NULL 总页数 FROM B
UNION ALL
SELECT ID,
(SELECT MAX(SN)+1 FROM B WHERE B.ID = A.ID),
PAGES+1,
PAGES 总页数
FROM A
) B2
ON B2.ID = B1.ID
AND B2.SN = B1.SN+1
WHERE B1.ID = 1
限量的蓝天 2014-08-08
  • 打赏
  • 举报
回复
呵呵,您写得真是很巧妙,我之前总得执行个存储过程去算。 还想再请教一下,如果我想得到如下的一个视图,该怎么写呢? ID SN PAGENO 1 1 1 1 2 3 1 3 5 1 4 7 1 5 9-100 就是想把目录的最后一行置为页号-总页数

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧