sql server存储过程分页,行变列

CREATE PROCEDURE [dbo].[PROC_GetPriviousAndNextDetailContent]
@Index varchar(20),--表主键
@Table varchar(100),--从哪个表获取数据
@Columns varchar(100),--需要获取哪些字段
@OrderStr varchar(100),--排序字段及方式
@Where1    varchar(100),--row_number中的初步过滤条件
@Where2 varchar(100)--当前要查询详细内容的ID条件
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

-- Insert statements for procedure here
    declare @sql nvarchar(1000),@rowid int,@Previousid int,@Nextid int
    set @sql=N‘select @rowid=rowindex from(select ‘[email protected]+‘,ROW_NUMBER() over(order by ‘[email protected]+‘)rowindex from ‘[email protected]+‘ where ‘[email protected]+‘ )rt where ‘[email protected]
    --print @sql
    exec sp_executesql @sql,N‘@rowid int output‘,@[email protected] output
    --获取前一条ID
        set @sql=N‘select @Previousid=‘[email protected]+‘ from(select ‘[email protected]+‘,ROW_NUMBER() over(order by ‘[email protected]+‘)rowindex from ‘[email protected]+‘ where ‘[email protected]+‘ )rt where rowindex=‘+cast((@rowid-1) as varchar)
exec sp_executesql @sql,N‘@Previousid int output‘,@[email protected] output
if @Previousid is null
set @Previousid=0
--获取后一条ID
  set @sql=N‘select @Nextid=‘[email protected]+‘ from(select ‘[email protected]+‘,ROW_NUMBER() over(order by ‘[email protected]+‘)rowindex from ‘[email protected]+‘ where ‘[email protected]+‘ )rt where rowindex=‘+cast((@rowid+1) as varchar)
exec sp_executesql @sql,N‘@Nextid int output‘,@[email protected] output
if @Nextid is null
set @Nextid=0
--print @Previousid
--print @Nextid
--获取最后完整数据
exec(‘select ‘[email protected]+ ‘,‘[email protected]+‘ Previousid,‘[email protected]+‘ Nextid from ‘[email protected]+‘ where ‘[email protected])
END
表结构:

Id   two    three

1        2        3

4        5        6

7        8        9

根据传入参数“4”查询结果:

1        7        5        6

sql server存储过程分页,行变列,布布扣,bubuko.com

时间: 2024-10-11 23:25:46

sql server存储过程分页,行变列的相关文章

Sql server 中将数据行转列列转行(二)

老规矩,先弄一波测试数据,数据填充代码没有什么意义,先折叠起来: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName nvarchar(20), --学生名称 Chinese int, Math int, English int ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student --查询所有数据 INSERT INTO #Student(StuName,Chinese,Math

Sql server 中将数据行转列列转行(一)

在做一些数据分析与数据展示时,经常会遇到行转列,列转行的需求,今天就来总结下: 在开始之前,先来创建一个临时表,并且写入一些测试数据: /* 第一步:创建临时表结构 */ CREATE TABLE #Student --创建临时表 ( StuName nvarchar(20), --学生名称 StuSubject nvarchar(20),--考试科目 StuScore int --考试成绩 ) DROP TABLE #Student --删除临时表 SELECT * FROM #Student

Sql Server 存储过程分页

[2014-09-05] 在企业级项目开发中,分页查询,获取某一类数据的List列表,这一功能是最普遍也是最重要的功能.其做法有很多种,例如ORM中自定义分页查询,一般情况下是拼接强类型的查询条件,然后转换成sql语句,查出出分页结果.在ORM转换过程中会稍微损失性能,效率会降低.对于百万级以上的大数据量,要求查询界面显示速度快,此时手动写存储过程,并且在存储过程中分页是最佳选择.下面给出具体的示例与说明: ============================================

sql server中的 行转列

PIVOT syntax: SELECT ..... FROM pivoted_table pivoted_table ::= table_source PIVOT <pivot_clause> table_alias        table_source ::= table,view, sub-query,XML......, 即SQL语句From关键字后可以跟的所有东西,定义太复杂,这里就不写了        pivot_clause ::=(  aggregate_function (

SQL SERVER 通用分页存储过程

SQL SERVER 通用分页存储过程 从SQLSERVER 2005开始,提供了Row_Number()函数,利用函数生成的Index来处理分页,按照正常的逻辑思维都是传pageIndex和pageSize来完成分页,昨天前端和我沟通,他们使用jQuery.DataTable.js插件,而且经过了公司底层的封装,pageIndex需要变动一下,变成pageIndex*pageSize来传. 也就是说按每页显示30条算,第一次传0,第二次传30这样来计算,我也是醉了. 1.传pageIndex和

SQL Server 2008 分页存储过程

在用的,已经不知道出处了,如果有侵权请告诉我,我立刻删掉. USE [ActivaOnlineSupport] GO /****** Object: StoredProcedure [dbo].[PROCE_PAGECHANGE] Script Date: 08/13/2014 13:45:17 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[PROCE_PAGECHANGE] ( @

浅谈SQL Server数据库分页

数据库分页是老生常谈的问题了.如果使用ORM框架,再使用LINQ的话,一个Skip和Take就可以搞定.但是有时由于限制,需要使用存储过程来实现.在SQLServer中使用存储过程实现分页的已经有很多方法了.之前在面试中遇到过这一问题,问如何高效实现数据库分页.刚好上周在业务中也遇到了这个需求,所以在这里简单记录和分享一下. 一 需求 这里以SQLServer的示例数据库NorthWind为例,里面有一张Product表,现在假设我们的需求是要以UnitPrice降序排列,并且分页,每一页10条

SQL Server存储过程的使用

存储过程概述 简单来说,存储过程就是一条或者多条sql语句的集合,可视为批处理文件,但是其作用不仅限于批处理. 基本概念: SQL Server中的存储过程是使用T_SQL编写的代码段.它的目的在于能够方便的从系统表中查询信息, 或者完成与更新数据库表相关的管理任务和其他的系统管理任务.T_SQL语句是SQL Server数据库与应用程序之间的编程接口. 存储过程就是SQL Server为了实现特定任务,而将一些需要多次调用的固定操作语句编写成程序段,这些程序段存储在服务器上, 有数据库服务器通

SQL Server 存储过程具体解释

SQL Server 存储过程具体解释 存储过程的优缺点 ◆长处: 运行速度更快. 存储过程仅仅在创造时进行编译,而一般SQL语句每运行一次就编译一次,所以使用存储过程运行速度更快. 存储过程用于处理复杂的操作时,程序的可读性更强.网络的负担更小. 使用存储过程封装事务性能更佳. 能有效的放注入,安全性更好. 可维护性高.在一些业务规则发生变化时.有时仅仅需调整存储过程就可以.而不用修改和重编辑程序. 更好的代码重用. ◆ 缺点: 存储过程将给server带来额外的压力. 存储过程多多时维护比較