- 浏览: 475234 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 753接着上回的“针对接口编程,不针对实现编程”原则说。 假 ... -
《深入浅出设计模式-中文版》读书笔记 策略模式(二)
2010-07-02 07:25 702接着上回的“针对接口编程,不针对实现编程”原则说。 假 ... -
NET 应用架构指导 V2 学习笔记(十二) 业务逻辑层的设计步骤
2010-06-01 00:07 458部署方面的考虑 当部署业务逻辑层的时候,一定要考虑生产 ... -
NET 应用架构指导 V2 学习笔记(二十一) 设计业务实体
2010-06-08 07:05 436概况 业务实体 ... -
NET 应用架构指导 V2 学习笔记(二十二) 设计数据访问组件
2010-06-09 06:53 409概况 数据层组 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 1403我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 614以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 7291、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 1082大家在T-SQL中使用substring的时候需要注意一点 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 446最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 257最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 3236我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 702以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 5841、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 813大家在T-SQL中使用substring的时候需要注意一点 ... -
根据总用量计算每种包装规格的购买量和总价
2010-03-23 12:36 437最近有这么一个需求,就是给出客户需要的总量,然后根据 ... -
Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
2010-01-21 10:48 2098我在windows2003 R2上面开发Silve ... -
Silverlight3+WCF遇到的问题(二):wcf system.servicemodel.communicationexception
2010-01-28 13:43 778以前我访问的数据库都是一张表,没有关联,昨天添加了两张 ... -
Silverlight3系列(九)Silverlight 及其相关技术简介
2010-02-09 10:51 6951、Silverlight应用类型 •RIA Rich I ... -
【转载】利用SQL的charindex实现字符串数组和Split函数
2010-03-13 12:57 944大家在T-SQL中使用substring的时候需要注意一点 ...
相关推荐
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
想在存储过程中分页的朋友可以使用, sqlserver存储过程万能分页
sqlserver+group by分组查询分页存储过程
通用的Sql Server分页程序,并且符合BootStrap Table 的调用标准.
很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术,很好的通过存储过程实现分页的技术
sqlserver 分页调用的存储过程 t-sql 语句
SQLSERVER高效率分页存储过程,数据量在2千万下查询分页只需要1-2秒,优化良好....
SqlServer 分页 存储过程
sqlserver 支持多表联合查询分页存储过程 sqlserver 支持多表联合查询分页存储过程 sqlserver 支持多表联合查询分页存储过程 sqlserver 支持多表联合查询分页存储过程
mybatis中,sqlserver分页
微软C#.net中的宠物商店的例子 中的标准的分页存储过程
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
千万级数据分页查询存储过程SQLServer 有实例
SQL Server 2000下的通用分页存储过程.sql
sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 sql server,分页存储,过程,演示 ...
SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。
sql server数据库中分页的存储过程,参数中比较灵活,如果首页传1,非首页传其他。
sqlserver分页sql
物有所值的东东 SQL SERVER 分页存储过程 SQL SERVER 分页存储过程 SQL SERVER 分页存储过程