我的分组分页查询语句

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <杨志翔>
-- Create date: <2011-11-22 14:00>
-- Description: <根据条件分组 根据>
-- exec GetPageListByGroup 'ProductSeries','*',3,5,'ClassTree_ID','ParentClassID','7','ProductSeries_ID','desc','ProductSeriesName like ''%博%'''
-- =============================================
CREATE PROCEDURE GetPageListByGroup
@tblName varchar(255), --表名
@fldStr varchar(1000), --字段列表
@pagesize int, --页的大小
@pageIndex int, --页序号,第多少页
@group varchar(255), --分组字段
@parent varchar(255), --过滤字段
@parentStr varchar(1000), --过滤条件
@ordName varchar(255), --排序的字段名
@ordBy char(4), --排序方式
@where varchar(1000) --查询条件
AS
BEGIN

declare @sql varchar(8000)
set @sql=''
set @sql=@sql+'select '+@fldStr+' from '+@tblName+' where '+@group+' in ('
set @sql=@sql+'select top ('+Convert(varchar(50),@pagesize)+') '+@group+' from ('
set @sql=@sql+'select top ('+Convert(varchar(50),@pagesize*@pageIndex)+') '+@group+' from '+@tblName+' where '+@parent+'='+@parentStr+' group by '+@group+' ) grp Order By '+@group+' DESC'
set @sql=@sql+')'
if len(@where)>0
set @sql=@sql+' and '+@where
set @sql=@sql+' order by '+@group+' ASC'
if len(@ordName)>0
set @sql=@sql+','+@ordName+' '+@ordBy

execute(@sql);

END
GO

原文地址:https://www.cnblogs.com/21xz/p/2258915.html