环思产品论坛

标题: 报表每页固定行数使用SQL分页示例 [打印本页]

作者: zhouyangping    时间: 2014-12-11 11:04
标题: 报表每页固定行数使用SQL分页示例
客户要求效果


使用SQL分页

  1. DECLARE @iPageCount INT = 8 /*每页8条*/



  2. CREATE TABLE #tmpIndex (iIndex INT)
  3. DECLARE @i INT = 1
  4. WHILE @i <=@iPageCount
  5. BEGIN
  6. INSERT #tmpIndex (iIndex) VALUES(@I) ;
  7. SET @I = @I+1
  8. END


  9. SELECT sMaterialNo,ummMaterialGUID
  10. INTO #tmpHdr
  11. FROM dbo.mmMaterialFabric a
  12. WHERE a.sMaterialNo IN
  13. (
  14. 'S141009004AR1'
  15. ,'S141013007D'
  16. )

  17. SELECT A.ummMaterialGUID,b.sYarnNo,sYarnName=c.sMaterialNo,b.sUsage
  18. ,iOrder=ROW_NUMBER() OVER(PARTITION BY B.utmBOMHdrGUID,B.sUsage ORDER BY b.sYarnNo)
  19. ,iIndex=CONVERT(INT,0)
  20. ,iPage=CONVERT(INT,0)
  21. INTO #tmpBom
  22. FROM dbo.tmBOMHdr a
  23. JOIN dbo.tmBOMDtl b ON b.utmBOMHdrGUID = a.uGUID
  24. JOIN dbo.mmMaterialYarn c ON c.ummMaterialGUID = b.ummMaterialGUID
  25. WHERE a.ummMaterialGUID IN
  26. (
  27. SELECT ummMaterialGUID FROM #tmpHdr
  28. )

  29. UPDATE #tmpBom SET iIndex = (iOrder - 1) % @iPageCount + 1,iPage = (iOrder - 1) / @iPageCount + 1

  30. SELECT DISTINCT ummMaterialGUID,iPage
  31. INTO #tmpPage
  32. FROM #tmpBom

  33. SELECT a.sMaterialNo,a.ummMaterialGUID,b.iPage,c.iIndex
  34. INTO #tmpTotal
  35. FROM #tmpHdr a
  36. JOIN #tmpPage b ON b.ummMaterialGUID = a.ummMaterialGUID,#tmpIndex c

  37. SELECT A.sMaterialNo,a.iPage,a.iIndex
  38. ,sYarnNoJ=B.sYarnNo,sYarnNameJ=B.sYarnName
  39. ,sYarnNoW=C.sYarnNo,sYarnNameW=C.sYarnName
  40. FROM #tmpTotal A
  41. LEFT JOIN #tmpBom B ON B.ummMaterialGUID = A.ummMaterialGUID AND b.iPage = a.iPage AND b.iIndex = a.iIndex AND B.sUsage = 'J'
  42. LEFT JOIN #tmpBom C ON C.ummMaterialGUID = A.ummMaterialGUID AND c.iPage = a.iPage AND c.iIndex = a.iIndex AND C.sUsage = 'W'
  43. ORDER BY sMaterialNo,iPage,iIndex

  44. DROP TABLE #tmpIndex
  45. DROP TABLE #tmpHdr
  46. DROP TABLE #tmpBom
  47. DROP TABLE #tmpPage
  48. DROP TABLE #tmpTotal
复制代码







欢迎光临 环思产品论坛 (http://bbs.huansi.cn/) Powered by Discuz! X3.2