当前位置: 代码迷 >> Sql Server >> 知道总页数,如何根据目录的页号,求各目录页数
  详细解决方案

知道总页数,如何根据目录的页号,求各目录页数

热度:35   发布时间:2016-04-24 10:11:26.0
知道总页数,怎么根据目录的页号,求各目录页数?
比如一本书100页,目录,1,3,5,7,9,表a 中存有总数页100,  表B中是目录号  ,a.id=b.id
想得到:
页号  页数
1       2
3       2
5      2
7      2
9      92

我想通过一个视图得到上述的结果,该怎么写呢?
------解决方案--------------------
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

------解决方案--------------------
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
  相关解决方案