- 浏览: 495606 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1028)
- [发布至博客园首页] (826)
- [随笔分类]个人生活随笔 (14)
- [网站分类]首页候选区 (26)
- [网站分类]SharePoint (15)
- [网站分类]其他技术区 (6)
- [随笔分类]批处理技巧 (6)
- [随笔分类].net 2.0 (3)
- [随笔分类]SharePoint2007(MOSS2007) (0)
- [网站分类].NET新手区 (6)
- [网站分类]ASP.NET (6)
- [网站分类]架构设计 (18)
- [网站分类]程序人生 (2)
- [网站分类]SQL Server (2)
- WCF (3)
- 编程技巧 (2)
- 模式架构 (2)
- 分析设计 (4)
- 生活随笔 (0)
- 软件工程 (1)
- Android实例 (2)
最新评论
-
zilong0536:
楼主您好:
请问发表博文支持图片的功能怎么实现啊,一直没有思路 ...
新浪微博开放平台开发-android客户端(3) -
nicegege:
小弟 学习了
帮助中国移动设计10086的排队小模块 -
zl7824516:
用什么技术没说啊
通告(公告),消息(站内短信),提醒的设计:通告 -
virusswb:
源码下载: SinaWeibo2 源码下载之后,将后缀改为ra ...
新浪微博开放平台开发-android客户端(3) -
Jimmyxu0311:
找不到源码下载
新浪微博开放平台开发-android客户端(3)
以前的分页我都是主子表join查询,然后会出现下面的记录形式,返回时一个数据集合
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> 订单1 明细1.1
订单1 明细1.2
订单1 明细1.3
订单2 明细2.1
订单2 明细2.2
订单1 明细1.2
订单1 明细1.3
订单2 明细2.1
订单2 明细2.2
这样的话,就造成大量的数据冗余,就是【订单1】的数据被重复多次从数据库读取。这次我尝试将他们分开返回,返回两个数据集合
订单集合
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> 订单1
订单2
订单3
订单2
订单3
明细集合
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> 明细1.1
明细1.2
明细1.3
明细2.1
明细2.2
明细1.2
明细1.3
明细2.1
明细2.2
这样的结果不知道会不会有效率提升,还有待测试。但是数据量少了,联合的数据量也少了。以前需要联合整张订单表和整张明细表,现在首先将符合条件的订单找到,然后用符合条件的订单和明细表联合,直接查找符合条件的订单的明细,目标明确了。
当然了,找到的符合条件的订单还是放在零时表中,然后用临时表和明细表进行inner join查询明细信息。
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->DECLARE @begintime DATETIME
SET @begintime= GETDATE()
--查询代理人所在村的订单
--参数部分
DECLARE
@PageIndex INT, --指定页
@PageSize INT, --每页记录数
@TotalNumber INT, --返回记录总数
@AgentID VARCHAR(36), --代理人ID
@GoodsName VARCHAR(50),
@OrderSeqNo VARCHAR(36),
@FarmerName VARCHAR(50),
@OrderStatus VARCHAR(6),
@CompanyName VARCHAR(100),
@PlaceTimeStart DATETIME,
@PlaceTimeEnd DATETIME
--参数赋值
SET @PageIndex=11
SET @PageSize=10
SET @AgentID='0ff6f6e1-a111-4523-bbd0-4ce28e8dda56'
SET @GoodsName=''
SET @OrderSeqNo=''
SET @FarmerName=''
SET @OrderStatus=''
SET @CompanyName=''
-- @PlaceTimeStart DATETIME,
-- @PlaceTimeEnd DATETIME
--临时变量定义
DECLARE @VillageID VARCHAR(36) --村ID
SELECT @VillageID=ai.VillageID FROM AgentInfo ai WHERE ai.AgentID=@AgentID
--临时表#PurchaseDoc,仅用于存储查询出来的PurchaseDocID和农民Name
DECLARE @PurchaseDoc TABLE (
PurchaseDocID VARCHAR(36),
[NAME] VARCHAR(50)
);
--查询指定村的购买单号和农民名字到#PurchaseDoc
INSERT INTO @PurchaseDoc(PurchaseDocID,[NAME])
SELECT pd.PurchaseDocID,pi1.[Name]
FROM PurchaseDoc pd INNER JOIN PlanterInfo pi1
ON pd.PlanterID=pi1.PlanterID
WHERE pi1.VillageID=@VillageID
--获取记录总数,未设置查询条件
SELECT @TotalNumber=COUNT(*)
FROM OrderInfo oi INNER JOIN @PurchaseDoc
ON oi.PurchaseDocID=[@PurchaseDoc].PurchaseDocID
AND [@PurchaseDoc].[NAME] LIKE '%'+@FarmerName+'%'
INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
AND oi.GoodsName LIKE '%'+@GoodsName+'%'
AND oi.OrderSeqNO LIKE '%'+@OrderSeqNo+'%'
AND ci.CompanyName LIKE '%'+@CompanyName+'%'
And oi.OrderStatus LIKE '%'+@OrderStatus+'%'
AND (oi.PlaceTime BETWEEN ISNULL(@PlaceTimeStart,'1900-01-01') AND ISNULL(@PlaceTimeEnd,'9999-12-31'))
;
--定义并计算指定页首记录编号
DECLARE @StartNumber INT,@TotalPages INT
SET @TotalPages=CEILING(@TotalNumber/@PageSize)
SET @StartNumber=
CASE
WHEN @PageIndex<=1 THEN 1
WHEN @PageIndex>@TotalPages THEN (@TotalPages-1)*@PageSize+1
ELSE (@PageIndex-1)*@PageSize+1
END;
--临时订单表
DECLARE @OrderInfo TABLE (
OrderSeqNO VARCHAR(36),
GoodsName VARCHAR(50),
--CompanyID VARCHAR(36),
CompanyName VARCHAR(100),
GoodsType VARCHAR(3),
OrderAmount DECIMAL(12,2),
PlaceTime DATETIME,
DeliveryTime DATETIME,
OrderStatus VARCHAR(6),
PurchaseDocID VARCHAR(36),
GoodsID VARCHAR(36)
);
--查询当前页的订单信息到临时订单表
WITH cte AS (
SELECT ROW_NUMBER() OVER (ORDER BY oi.PlaceTime DESC) AS RowNumber,
oi.OrderSeqNO ,
oi.GoodsName ,
--oi.CompanyID,
ci.CompanyName ,
oi.GoodsType ,
oi.OrderAmount ,
oi.PlaceTime ,
oi.DeliveryTime ,
oi.OrderStatus,
oi.PurchaseDocID,
oi.GoodsID
FROM OrderInfo oi INNER JOIN @PurchaseDoc
ON oi.PurchaseDocID=[@PurchaseDoc].PurchaseDocID
AND [@PurchaseDoc].[NAME] LIKE '%'+@FarmerName+'%'
INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
AND oi.GoodsName LIKE '%'+@GoodsName+'%'
AND oi.OrderSeqNO LIKE '%'+@OrderSeqNo+'%'
AND ci.CompanyName LIKE '%'+@CompanyName+'%'
And oi.OrderStatus LIKE '%'+@OrderStatus+'%'
AND (oi.PlaceTime BETWEEN ISNULL(@PlaceTimeStart,'1900-01-01') AND ISNULL(@PlaceTimeEnd,'9999-12-31'))
)
INSERT INTO @OrderInfo
SELECT cte.OrderSeqNO ,
cte.GoodsName ,
--cte.CompanyID ,
cte.CompanyName,
cte.GoodsType ,
cte.OrderAmount ,
cte.PlaceTime ,
cte.DeliveryTime ,
cte.OrderStatus,
cte.PurchaseDocID,
cte.GoodsID
FROM cte WHERE RowNumber BETWEEN @StartNumber AND (@StartNumber+@PageSize-1)
--获取用于显示的订单信息
SELECT oi.OrderSeqNO,
oi.GoodsName,
--ci.CompanyName,
oi.CompanyName,
oi.GoodsType,
oi.OrderAmount,
oi.PlaceTime,
oi.DeliveryTime,
oi.OrderStatus,
pd.[NAME]
FROM @OrderInfo oi
INNER JOIN @PurchaseDoc pd ON oi.PurchaseDocID=pd.PurchaseDocID
--INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
--获取订单的详细信息
--SELECT vpps.PkgAmount,vpps.UnitCnName,vpps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
-- FROM OrderDetail od
--INNER JOIN @OrderInfo oi ON od.OrderSeqNO=oi.OrderSeqNO
--INNER JOIN View_ProductPkgSpec vpps ON od.GoodsID=vpps.PkgSpecID
SELECT sps.PkgAmount,u.UnitCnName,ps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
FROM @OrderInfo oi
INNER JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO AND oi.GoodsType='2'
INNER JOIN SeedPkgSpec sps ON od.GoodsID=sps.SeedPkgSpecID
INNER JOIN Unit u ON sps.Unit=u.UnitCode
INNER JOIN PkgSpec ps ON sps.PkgSpecName=ps.PkgSpecCode
UNION
SELECT pps.PkgAmount,u.UnitCnName,ps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
FROM @OrderInfo oi
INNER JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO AND oi.GoodsType='3'
INNER JOIN PesPkgSpec pps ON od.GoodsID=pps.PesPkgSpecID
INNER JOIN Unit u ON pps.Unit=u.UnitCode
INNER JOIN PkgSpec ps ON pps.PkgSpecName=ps.PkgSpecCode
UNION
SELECT fps.PkgAmount,u.UnitCnName,ps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
FROM @OrderInfo oi
INNER JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO AND oi.GoodsType='4'
INNER JOIN FertPkgSpec fps ON od.GoodsID=fps.FertPkgSpecID
INNER JOIN Unit u ON fps.Unit=u.UnitCode
INNER JOIN PkgSpec ps ON fps.PkgSpecName=ps.PkgSpecCode
SELECT DATEDIFF(ms,@begintime,GETDATE())
SET @begintime= GETDATE()
--查询代理人所在村的订单
--参数部分
DECLARE
@PageIndex INT, --指定页
@PageSize INT, --每页记录数
@TotalNumber INT, --返回记录总数
@AgentID VARCHAR(36), --代理人ID
@GoodsName VARCHAR(50),
@OrderSeqNo VARCHAR(36),
@FarmerName VARCHAR(50),
@OrderStatus VARCHAR(6),
@CompanyName VARCHAR(100),
@PlaceTimeStart DATETIME,
@PlaceTimeEnd DATETIME
--参数赋值
SET @PageIndex=11
SET @PageSize=10
SET @AgentID='0ff6f6e1-a111-4523-bbd0-4ce28e8dda56'
SET @GoodsName=''
SET @OrderSeqNo=''
SET @FarmerName=''
SET @OrderStatus=''
SET @CompanyName=''
-- @PlaceTimeStart DATETIME,
-- @PlaceTimeEnd DATETIME
--临时变量定义
DECLARE @VillageID VARCHAR(36) --村ID
SELECT @VillageID=ai.VillageID FROM AgentInfo ai WHERE ai.AgentID=@AgentID
--临时表#PurchaseDoc,仅用于存储查询出来的PurchaseDocID和农民Name
DECLARE @PurchaseDoc TABLE (
PurchaseDocID VARCHAR(36),
[NAME] VARCHAR(50)
);
--查询指定村的购买单号和农民名字到#PurchaseDoc
INSERT INTO @PurchaseDoc(PurchaseDocID,[NAME])
SELECT pd.PurchaseDocID,pi1.[Name]
FROM PurchaseDoc pd INNER JOIN PlanterInfo pi1
ON pd.PlanterID=pi1.PlanterID
WHERE pi1.VillageID=@VillageID
--获取记录总数,未设置查询条件
SELECT @TotalNumber=COUNT(*)
FROM OrderInfo oi INNER JOIN @PurchaseDoc
ON oi.PurchaseDocID=[@PurchaseDoc].PurchaseDocID
AND [@PurchaseDoc].[NAME] LIKE '%'+@FarmerName+'%'
INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
AND oi.GoodsName LIKE '%'+@GoodsName+'%'
AND oi.OrderSeqNO LIKE '%'+@OrderSeqNo+'%'
AND ci.CompanyName LIKE '%'+@CompanyName+'%'
And oi.OrderStatus LIKE '%'+@OrderStatus+'%'
AND (oi.PlaceTime BETWEEN ISNULL(@PlaceTimeStart,'1900-01-01') AND ISNULL(@PlaceTimeEnd,'9999-12-31'))
;
--定义并计算指定页首记录编号
DECLARE @StartNumber INT,@TotalPages INT
SET @TotalPages=CEILING(@TotalNumber/@PageSize)
SET @StartNumber=
CASE
WHEN @PageIndex<=1 THEN 1
WHEN @PageIndex>@TotalPages THEN (@TotalPages-1)*@PageSize+1
ELSE (@PageIndex-1)*@PageSize+1
END;
--临时订单表
DECLARE @OrderInfo TABLE (
OrderSeqNO VARCHAR(36),
GoodsName VARCHAR(50),
--CompanyID VARCHAR(36),
CompanyName VARCHAR(100),
GoodsType VARCHAR(3),
OrderAmount DECIMAL(12,2),
PlaceTime DATETIME,
DeliveryTime DATETIME,
OrderStatus VARCHAR(6),
PurchaseDocID VARCHAR(36),
GoodsID VARCHAR(36)
);
--查询当前页的订单信息到临时订单表
WITH cte AS (
SELECT ROW_NUMBER() OVER (ORDER BY oi.PlaceTime DESC) AS RowNumber,
oi.OrderSeqNO ,
oi.GoodsName ,
--oi.CompanyID,
ci.CompanyName ,
oi.GoodsType ,
oi.OrderAmount ,
oi.PlaceTime ,
oi.DeliveryTime ,
oi.OrderStatus,
oi.PurchaseDocID,
oi.GoodsID
FROM OrderInfo oi INNER JOIN @PurchaseDoc
ON oi.PurchaseDocID=[@PurchaseDoc].PurchaseDocID
AND [@PurchaseDoc].[NAME] LIKE '%'+@FarmerName+'%'
INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
AND oi.GoodsName LIKE '%'+@GoodsName+'%'
AND oi.OrderSeqNO LIKE '%'+@OrderSeqNo+'%'
AND ci.CompanyName LIKE '%'+@CompanyName+'%'
And oi.OrderStatus LIKE '%'+@OrderStatus+'%'
AND (oi.PlaceTime BETWEEN ISNULL(@PlaceTimeStart,'1900-01-01') AND ISNULL(@PlaceTimeEnd,'9999-12-31'))
)
INSERT INTO @OrderInfo
SELECT cte.OrderSeqNO ,
cte.GoodsName ,
--cte.CompanyID ,
cte.CompanyName,
cte.GoodsType ,
cte.OrderAmount ,
cte.PlaceTime ,
cte.DeliveryTime ,
cte.OrderStatus,
cte.PurchaseDocID,
cte.GoodsID
FROM cte WHERE RowNumber BETWEEN @StartNumber AND (@StartNumber+@PageSize-1)
--获取用于显示的订单信息
SELECT oi.OrderSeqNO,
oi.GoodsName,
--ci.CompanyName,
oi.CompanyName,
oi.GoodsType,
oi.OrderAmount,
oi.PlaceTime,
oi.DeliveryTime,
oi.OrderStatus,
pd.[NAME]
FROM @OrderInfo oi
INNER JOIN @PurchaseDoc pd ON oi.PurchaseDocID=pd.PurchaseDocID
--INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
--获取订单的详细信息
--SELECT vpps.PkgAmount,vpps.UnitCnName,vpps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
-- FROM OrderDetail od
--INNER JOIN @OrderInfo oi ON od.OrderSeqNO=oi.OrderSeqNO
--INNER JOIN View_ProductPkgSpec vpps ON od.GoodsID=vpps.PkgSpecID
SELECT sps.PkgAmount,u.UnitCnName,ps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
FROM @OrderInfo oi
INNER JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO AND oi.GoodsType='2'
INNER JOIN SeedPkgSpec sps ON od.GoodsID=sps.SeedPkgSpecID
INNER JOIN Unit u ON sps.Unit=u.UnitCode
INNER JOIN PkgSpec ps ON sps.PkgSpecName=ps.PkgSpecCode
UNION
SELECT pps.PkgAmount,u.UnitCnName,ps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
FROM @OrderInfo oi
INNER JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO AND oi.GoodsType='3'
INNER JOIN PesPkgSpec pps ON od.GoodsID=pps.PesPkgSpecID
INNER JOIN Unit u ON pps.Unit=u.UnitCode
INNER JOIN PkgSpec ps ON pps.PkgSpecName=ps.PkgSpecCode
UNION
SELECT fps.PkgAmount,u.UnitCnName,ps.PkgSpecName,od.Qty,od.UnitPrice,od.OrderSeqNO
FROM @OrderInfo oi
INNER JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO AND oi.GoodsType='4'
INNER JOIN FertPkgSpec fps ON od.GoodsID=fps.FertPkgSpecID
INNER JOIN Unit u ON fps.Unit=u.UnitCode
INNER JOIN PkgSpec ps ON fps.PkgSpecName=ps.PkgSpecCode
SELECT DATEDIFF(ms,@begintime,GETDATE())
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->DECLARE @begintime DATETIME
SET @begintime= GETDATE()
--查询厂商订单,OrderStatus条件未设置
--参数部分
DECLARE
@PageIndex INT, --指定页
@PageSize INT, --每页记录数
@TotalNumber INT, --返回记录总数
@CompanyID VARCHAR(36), --厂商ID
@DisCode VARCHAR(12),
@GoodsName VARCHAR(50),
@GoodsType VARCHAR(3),
@OrderAmountStart DECIMAL(12,2),
@OrderAmountEnd DECIMAL(12,2),
@PlaceTimeStart DATETIME,
@PlaceTimeEnd DATETIME
--@OrderStatus VARCHAR(6)
--参数赋值
SET @PageIndex=110
SET @PageSize=10
SET @CompanyID='22177BE9-AA3F-4F3C-ABDC-5AB2ECD50658'
SET @DisCode=''
SET @GoodsName=''
SET @GoodsType=''
SET @OrderAmountStart=0
SET @OrderAmountEnd=9999999999.99
--去掉地域代码参数右侧为0的部分
SET @DisCode=
CASE
WHEN @DisCode LIKE '__0000000000' THEN LEFT(@DisCode,2)
WHEN @DisCode LIKE '____00000000' THEN LEFT(@DisCode,4)
WHEN @DisCode LIKE '______000000' THEN LEFT(@DisCode,6)
WHEN @DisCode LIKE '_________000' THEN LEFT(@DisCode,9)
ELSE @DisCode
END;
--获取记录总数,未设置查询条件
SELECT @TotalNumber=COUNT(*) FROM OrderInfo oi
INNER JOIN PurchaseDoc pd ON oi.PurchaseDocID=pd.PurchaseDocID
AND oi.CompanyID=@CompanyID
AND pd.DisCode LIKE @DisCode+'%'
AND oi.GoodsName LIKE '%'+@GoodsName+'%'
AND oi.GoodsType LIKE '%'+@GoodsType+'%'
AND oi.OrderAmount BETWEEN @OrderAmountStart AND @OrderAmountEnd
AND oi.PlaceTime BETWEEN ISNULL(@PlaceTimeStart,'1900-01-01') AND ISNULL(@PlaceTimeEnd,'9999-12-31')
--And (其他条件)oi.OrderStatus=
--定义并计算指定页首记录编号
DECLARE @StartNumber INT,@TotalPages INT
SET @TotalPages=CEILING(@TotalNumber/@PageSize)
SET @StartNumber=
CASE
WHEN @PageIndex<=1 THEN 1
WHEN @PageIndex>@TotalPages THEN (@TotalPages-1)*@PageSize+1
ELSE (@PageIndex-1)*@PageSize+1
END;
--临时订单表
DECLARE @OrderInfo TABLE (
OrderSeqNO VARCHAR(36),
GoodsName VARCHAR(50),
GoodsType VARCHAR(3),
OrderAmount DECIMAL(12,2),
PlaceTime DATETIME,
Consignee VARCHAR(50),
ConsigneeTel VARCHAR(20),
PurchaseDocID VARCHAR(36),
ArrivalTime DATETIME,
ConsigneeAddress VARCHAR(200),
PostCode VARCHAR(6)
);
--查询当前页的订单信息到临时订单表
WITH cte AS (
SELECT ROW_NUMBER() OVER (ORDER BY oi.PlaceTime ASC) AS RowNumber,
oi.OrderSeqNO ,
oi.GoodsName ,
oi.GoodsType ,
oi.OrderAmount ,
oi.PlaceTime ,
pd.Consignee ,
pd.ConsigneeTel ,
pd.PurchaseDocID,
oi.ArrivalTime,
pd.ConsigneeAddress,
pd.PostCode
FROM OrderInfo oi
INNER JOIN PurchaseDoc pd ON oi.PurchaseDocID=pd.PurchaseDocID
AND oi.CompanyID=@CompanyID
AND pd.DisCode LIKE @DisCode+'%'
AND<span
SET @begintime= GETDATE()
--查询厂商订单,OrderStatus条件未设置
--参数部分
DECLARE
@PageIndex INT, --指定页
@PageSize INT, --每页记录数
@TotalNumber INT, --返回记录总数
@CompanyID VARCHAR(36), --厂商ID
@DisCode VARCHAR(12),
@GoodsName VARCHAR(50),
@GoodsType VARCHAR(3),
@OrderAmountStart DECIMAL(12,2),
@OrderAmountEnd DECIMAL(12,2),
@PlaceTimeStart DATETIME,
@PlaceTimeEnd DATETIME
--@OrderStatus VARCHAR(6)
--参数赋值
SET @PageIndex=110
SET @PageSize=10
SET @CompanyID='22177BE9-AA3F-4F3C-ABDC-5AB2ECD50658'
SET @DisCode=''
SET @GoodsName=''
SET @GoodsType=''
SET @OrderAmountStart=0
SET @OrderAmountEnd=9999999999.99
--去掉地域代码参数右侧为0的部分
SET @DisCode=
CASE
WHEN @DisCode LIKE '__0000000000' THEN LEFT(@DisCode,2)
WHEN @DisCode LIKE '____00000000' THEN LEFT(@DisCode,4)
WHEN @DisCode LIKE '______000000' THEN LEFT(@DisCode,6)
WHEN @DisCode LIKE '_________000' THEN LEFT(@DisCode,9)
ELSE @DisCode
END;
--获取记录总数,未设置查询条件
SELECT @TotalNumber=COUNT(*) FROM OrderInfo oi
INNER JOIN PurchaseDoc pd ON oi.PurchaseDocID=pd.PurchaseDocID
AND oi.CompanyID=@CompanyID
AND pd.DisCode LIKE @DisCode+'%'
AND oi.GoodsName LIKE '%'+@GoodsName+'%'
AND oi.GoodsType LIKE '%'+@GoodsType+'%'
AND oi.OrderAmount BETWEEN @OrderAmountStart AND @OrderAmountEnd
AND oi.PlaceTime BETWEEN ISNULL(@PlaceTimeStart,'1900-01-01') AND ISNULL(@PlaceTimeEnd,'9999-12-31')
--And (其他条件)oi.OrderStatus=
--定义并计算指定页首记录编号
DECLARE @StartNumber INT,@TotalPages INT
SET @TotalPages=CEILING(@TotalNumber/@PageSize)
SET @StartNumber=
CASE
WHEN @PageIndex<=1 THEN 1
WHEN @PageIndex>@TotalPages THEN (@TotalPages-1)*@PageSize+1
ELSE (@PageIndex-1)*@PageSize+1
END;
--临时订单表
DECLARE @OrderInfo TABLE (
OrderSeqNO VARCHAR(36),
GoodsName VARCHAR(50),
GoodsType VARCHAR(3),
OrderAmount DECIMAL(12,2),
PlaceTime DATETIME,
Consignee VARCHAR(50),
ConsigneeTel VARCHAR(20),
PurchaseDocID VARCHAR(36),
ArrivalTime DATETIME,
ConsigneeAddress VARCHAR(200),
PostCode VARCHAR(6)
);
--查询当前页的订单信息到临时订单表
WITH cte AS (
SELECT ROW_NUMBER() OVER (ORDER BY oi.PlaceTime ASC) AS RowNumber,
oi.OrderSeqNO ,
oi.GoodsName ,
oi.GoodsType ,
oi.OrderAmount ,
oi.PlaceTime ,
pd.Consignee ,
pd.ConsigneeTel ,
pd.PurchaseDocID,
oi.ArrivalTime,
pd.ConsigneeAddress,
pd.PostCode
FROM OrderInfo oi
INNER JOIN PurchaseDoc pd ON oi.PurchaseDocID=pd.PurchaseDocID
AND oi.CompanyID=@CompanyID
AND pd.DisCode LIKE @DisCode+'%'
AND<span
发表评论
-
《深入浅出设计模式-中文版》读书笔记 策略模式(二)
2010-07-02 07:25 774接着上回的“针对接口编程,不针对实现编程”原则说。 假 ... -
《深入浅出设计模式-中文版》读书笔记 策略模式(二)
2010-07-02 07:25 738接着上回的“针对接口编程,不针对实现编程”原则说。 假 ... -
NET 应用架构指导 V2 学习笔记(十二) 业务逻辑层的设计步骤
2010-06-01 00:07 477部署方面的考虑 当部署业务逻辑层的时候,一定要考虑生产 ... -
NET 应用架构指导 V2 学习笔记(二十一) 设计业务实体
2010-06-08 07:05 454概况 业务实体 ... -
NET 应用架构指导 V2 学习笔记(二十二) 设计数据访问组件
2010-06-09 06:53 430概况 数据层组 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 1477我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 635以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 7501、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 1099大家在T-SQL中使用substring的时候需要注意一点 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 467最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 281最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 3260我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 733以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 6151、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 852大家在T-SQL中使用substring的时候需要注意一点 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 457最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 2113我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 812以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 7251、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 970大家在T-SQL中使用substring的时候需要注意一点 ...
相关推荐
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...
### SQL Server 存储过程实现分页查询 #### 背景介绍 在数据库操作中,分页查询是非常常见的需求之一。特别是在数据量较大的场景下,分页不仅可以提高查询效率,还能改善用户体验。SQL Server 提供了多种方式进行...
### 标准SQL Server分页存储过程:深入解析与应用 在处理大量数据时,分页技术是提高数据展示效率和用户体验的关键。SQL Server提供的存储过程是实现分页功能的有效方式之一。本文将深入探讨微软C# .NET中的宠物...
通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.
很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术
在SQL Server中,通过存储过程实现分页是一种常见且高效的解决方案。其核心思想是利用游标(Cursor)或临时表来获取数据总量,并根据指定的页码和每页数量来计算出需要返回的具体记录范围。这种方法的优势在于它可以...
SQL Server 分页存储过程是一种在数据库中实现高效数据分页查询的方法。在大型数据集的展示中,分页是必不可少的,因为它允许用户逐步浏览数据,而不是一次性加载所有记录,从而提高用户体验并减少服务器负载。以下...
在SQL Server中,分页查询是一项非常常见的任务,特别是在处理大量数据时,为了提高用户体验,我们需要将结果集分块展示,这就是分页的作用。本文将详细介绍如何使用存储过程实现SQL Server的分页,并演示如何在代码...
SQLSERVER高效率分页存储过程,数据量在2千万下查询分页只需要1-2秒,优化良好....
在SQL Server中,面对千万级别的大数据量,进行有效的分页查询是数据库性能优化的重要环节。存储过程在这种场景下显得尤为重要,因为它们可以提高查询效率,减少网络传输,并且便于管理和重用代码。本文将深入探讨...
"ASP+SQL Server带条件查询的分页存储过程及其ASP调用实例" 本文主要介绍了如何使用ASP和SQL Server实现带条件查询的分页存储过程,并提供了实例代码和调用示例。该实例已经在IIS+ASP+SQL Server环境中进行了调试,...
本文将深入探讨如何创建和使用高效的分页存储过程,并针对SQL Server 2005及2010提供一个实用的例子。 首先,理解分页的基本概念。分页通常涉及到两个关键参数:当前页码(PageNumber)和每页记录数(PageSize)。...
mybatis中,sqlserver分页
在"分页存储过程效率对比.doc"文档中,可能详细分析了每种方法的执行计划、资源消耗、响应时间等指标,通过实验数据来展示不同方法在实际应用中的性能差异。对比这些数据可以帮助我们理解在特定数据库结构和工作负载...
在Java编程中,分页查询是一项非常重要的功能,特别是在处理大量数据时,它能有效地减少内存负担,提高应用性能。...无论是在MySQL还是SQL Server中,正确地实现分页都能显著提升应用性能和用户体验。
在VB6.0中调用SQL Server的存储过程是VB开发者经常遇到的问题,本文将详细介绍如何在VB6.0中调用SQL Server的存储过程,并对存储过程的优点和使用方法进行了详细的解释。 首先,存储过程是一种封装方法,用于重复...
SQL Server 2000下的通用分页存储过程.sql