<!--<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())
相关推荐
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 分页存储过程