最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sqlserver 支持定位當前頁,自定義排序的分頁SQL(拒絕動態(tài)SQL)

 更新時間:2010年05月23日 01:31:07   作者:  
sqlserver 支持定位當前頁,自定義排序的分頁SQL(拒絕動態(tài)SQL)
1,場景:根據(jù)學生編號查詢,返回該學生所在班級的所有學生。支持分頁、自定義排序及結果集自動定位到查詢條件的學生編號所在頁。
復制代碼 代碼如下:

CREATE PROC [dbo].[Sp_testpagerandsorting] (@GroupID INT,
@CurrentId INT,
@TimeFrom DATETIME,
@TimeTo DATETIME,
@OrderBy CHAR(50),
@PageSize INT,
@CurrentPage INT)
AS
SET nocount ON
BEGIN
DECLARE @StartNumber INT,
@EndNumber INT,
@CurrentIdRowNumber INT,
@RecordCount INT,
@EndPageIndex INT
DECLARE @RowNumberTable TABLE (
rownumber INT IDENTITY (1, 1),
id INT )
--step 1: Build sort id list -------------------------------------------------------
INSERT INTO @RowNumberTable
(id)
SELECT sm.id AS id
FROM dbo.test sm WITH (nolock)
WHERE indate BETWEEN Coalesce(@TimeFrom, indate) AND
Coalesce(@TimeTo, indate)
AND sm.groupid = @GroupID
ORDER BY CASE
WHEN @OrderBy = 'InDate desc' THEN ( Row_number() OVER (ORDER BY indate DESC))
WHEN @OrderBy = 'InDate asc' THEN (Row_number() OVER (ORDER BY indate ASC))
WHEN @OrderBy = 'Id asc' THEN (Row_number() OVER (ORDER BY sm.id ASC))
WHEN @OrderBy = 'Id desc' THEN (Row_number() OVER (ORDER BY sm.id DESC))
WHEN @OrderBy = 'Name asc' THEN (Row_number() OVER (ORDER BY sm.name ASC))
WHEN @OrderBy = 'Name desc' THEN (Row_number() OVER (ORDER BY sm.name DESC) )
END
--step 2: Reset page index with current id -----------------------------------------
IF @CurrentIdNumber > 0
BEGIN
SELECT TOP 1 @CurrentIdRowNumber = rownumber
FROM @RowNumberTable
WHERE id = @CurrentIdNumber
IF @CurrentIdRowNumber > 0
BEGIN
IF @CurrentPage = 0
BEGIN
SET @CurrentPage = Ceiling(CAST(@CurrentIdRowNumber AS DECIMAL) / CAST (@PageSize AS DECIMAL))
END
END
END
ELSE
BEGIN
IF @CurrentPage = 0
BEGIN
SET @CurrentPage = 1
END
END
--step 3: Set recordCount -----------------------------------------
SELECT @RecordCount = COUNT(1)
FROM @RowNumberTable
--step 4: Calc startNumber & endNumber -----------------------------------------
SELECT @StartNumber = @PageSize * ( @CurrentPage - 1 ),
@EndNumber = @PageSize * ( @CurrentPage - 1 ) + @pageSize,
@EndPageIndex = Ceiling(CAST(@RecordCount AS DECIMAL) / CAST(@PageSize AS DECIMAL))
IF @CurrentPage = @EndPageIndex
BEGIN
SET @EndNumber = @RecordCount
END
--step 5: Get sorted id of current page -----------------------------------------
;WITH a
AS (SELECT TOP (@EndNumber - @StartNumber) id,
rownumber
FROM (SELECT TOP (@EndNumber) id,
rownumber
FROM @RowNumberTable) AS b
ORDER BY rownumber DESC)
--step 6: Return current page idList -------------------------------------------------------
SELECT [ID],
[GroupID] [Name],
[Address]
FROM dbo.test sm WITH(nolock)
INNER JOIN a
ON a.id = sm.id
ORDER BY a.rownumber
-- step 7:return current page & record count ----------------------------------
SELECT @CurrentPage AS currentpage,
@RecordCount AS recordcount
END

2,簡單條件的,動態(tài)where語句(關于Like查詢的動態(tài)where,建議使用笨辦法做)
復制代碼 代碼如下:

CREATE PROC [dbo].[Getstudentlistbycondition] @Name NVARCHAR(20),
@Class INT
AS
SET nocount ON
BEGIN
BEGIN
SELECT [Name],
[class]
FROM [testtable]
WHERE [Class] = CASE
WHEN @Class > 0 THEN @Class ELSE [Class] END
AND [name] = CASE
WHEN @Name <> '' THEN @Name ELSE [Name] END
END
END

相關文章

  • SQL 比較一個集合是否在另一個集合里存在的方法分享

    SQL 比較一個集合是否在另一個集合里存在的方法分享

    SQL 比較一個集合是否在另一個集合里存在的方法分享,需要的朋友可以參考下。
    2011-11-11
  • sql實現(xiàn)split函數(shù)的腳本

    sql實現(xiàn)split函數(shù)的腳本

    這篇文章主要介紹了sql實現(xiàn)split函數(shù)的腳本,大家參考使用吧
    2013-11-11
  • 關于SQL查詢語句關鍵字方法

    關于SQL查詢語句關鍵字方法

    這篇文章主要介紹了關于SQL查詢語句關鍵字方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • SQLServer中匯總功能的使用GROUPING,ROLLUP和CUBE

    SQLServer中匯總功能的使用GROUPING,ROLLUP和CUBE

    查看SQL Server的幫助才發(fā)現(xiàn),厲害啊,原來還有這么厲害的東西,不由的想起以前做水晶報表的時候,原來在SQL Server中就可以實現(xiàn)這樣的功能.
    2010-07-07
  • mybatis動態(tài)sql實現(xiàn)邏輯代碼詳解

    mybatis動態(tài)sql實現(xiàn)邏輯代碼詳解

    mybatis通過將sql配置xml文件中,通過解析xml動態(tài)標簽來實現(xiàn)動態(tài)sql,本文以xml文件為例給大家介紹mybatis動態(tài)sql的實現(xiàn)代碼,感興趣的朋友一起看看吧
    2021-08-08
  • 診斷SQLSERVER問題常用的日志概述及使用

    診斷SQLSERVER問題常用的日志概述及使用

    這里主要有兩個:1.Windows事件日志2.SQLSERVER ErrorLog記下來將詳細介紹下它們的作用及使用方法,感興趣的朋友可以了解下,或許本的知識點對你有所幫助
    2013-02-02
  • 解析React?中的Virtual?DOM

    解析React?中的Virtual?DOM

    React在前端界一直很流行,而且學起來也不是很難,只需要學會JSX、理解State和Props,然后就可以愉快的玩耍了,但想要成為React的專家你還需要對React有一些更深入的理解,對React??Virtual?DOM相關知識感興趣的朋友一起看看吧
    2022-01-01
  • SQL Server中row_number分頁查詢的用法詳解

    SQL Server中row_number分頁查詢的用法詳解

    這篇文章主要介紹了SQL Server中row_number的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • SQL語句優(yōu)化方法30例(推薦)

    SQL語句優(yōu)化方法30例(推薦)

    在SQL語句優(yōu)化過程中,我們經(jīng)常會用到hint,現(xiàn)總結一下在SQL優(yōu)化過程中常見Oracle HINT的用法,提供效率。
    2010-09-09
  • SQLSERVERS 數(shù)據(jù)整理方法

    SQLSERVERS 數(shù)據(jù)整理方法

    SQLSERVERS 數(shù)據(jù)整理方法,需要的朋友可以參考下。
    2009-11-11

最新評論

深水埗区| 丹巴县| 茶陵县| 焦作市| 宁阳县| 涿鹿县| 长春市| 黔西县| 宁晋县| 沙坪坝区| 隆化县| 湖口县| 尼勒克县| 永胜县| 黑河市| 平顶山市| 邢台县| 定安县| 饶阳县| 乌拉特中旗| 庆阳市| 巢湖市| 南郑县| 太仆寺旗| 化州市| 广南县| 丹凤县| 临潭县| 濮阳县| 洪洞县| 白沙| 邯郸市| 白水县| 文登市| 五大连池市| 昌乐县| 山阳县| 敖汉旗| 雅江县| 色达县| 健康|