【发布时间】:2013-10-11 14:34:58
【问题描述】:
我正在使用以下 SQL 过程在我的 Web 应用程序的 JqGrid 中获取用于分页的数据。
ALTER PROCEDURE [dbo].[NewStoredProc]
(
@skip int,
@pageSize int,
@OrderBy Varchar(20),
@OrderByDirection Varchar(10)
)
AS
BEGIN
DECLARE @records int;
SET NOCOUNT ON;
SET @records =(select count(*) from Data where Status='A');
IF @skip <= 0
SELECT TOP (@pageSize) * from Data where Status='A'
ORDER BY CASE WHEN @OrderBy='Column1' AND @OrderByDirection='D' THEN Column1 END DESC ,CASE WHEN @OrderBy='Column1' AND @OrderByDirection !='D'THEN Column1 END,
CASE WHEN @OrderBy='Column2' AND @OrderByDirection='D' THEN Column2 END DESC ,CASE WHEN @OrderBy='Column2' AND @OrderByDirection !='D'THEN Column2 END,
CASE WHEN @OrderBy='Column3' AND @OrderByDirection='D' THEN Column3 END DESC ,CASE WHEN @OrderBy='Column3' AND @OrderByDirection !='D'THEN Column3 END
ELSE
WITH GetAll AS (
SELECT * from Data where Status='A')
,GetFirst AS (
SELECT TOP (@skip) *
FROM GetAll
),GetNext AS (
SELECT TOP (@pageSize) nt.*
FROM GetAll AS nt
LEFT OUTER JOIN GetFirst AS f ON f.Col1=nt.Col1
WHERE f.Col1 IS NULL)
SELECT * FROM GetNext;
RETURN @records;
END
这里的问题是我不能在 WITH 子句中使用OrderBy。但是,我只需要在排序后获取记录。有什么办法可以做到这一点..
简单来说..GetAll数据如何实现order by
【问题讨论】:
标签: sql-server-2008 stored-procedures jqgrid pagination sql-order-by