SP笔记:交叉实现七行并成一行
2006-11-02 15:43
218 查看
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: CHENQP
-- Create date: 9:37 2006-10-30
-- Description: 获取挑选库存货位信息查询、用于领导决策系统
-- 交叉实现七行并成一行
-- =============================================
ALTER PROCEDURE [dbo].[usp_TBManagerQuery_GetResortedTLWarehouse]
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS
BEGIN
SET NOCOUNT ON;
declare @strSQL varchar(5000) -- 主语句
Create Table #TMPTABLE_1(IDD int identity(1,1),
V_GoodsPlace VARCHAR(50) ,I_Package INT ,
N_Weight DECIMAL(18,3),V_OutGrade VARCHAR(50),
V_Customer VARCHAR(50),V_PurchaseType VARCHAR(50),V_AreaName VARCHAR(50))
if @strWhere !=''
set @strSQL = '
INSERT INTO #TMPTABLE_1
SELECT V_GoodsPlace,
COUNT(*) as I_Package,
SUM(N_Weight) as N_Weight,
V_OutGrade,
V_Customer,
V_PurchaseType,
dbo.FUN_GetProductionAreaName(I_OutOriginID) AS V_AreaName
FROM V_NPick_StorageStream where '
+ @strWhere +
'GROUP BY V_GoodsPlace,V_OutGrade,V_Customer,V_PurchaseType,I_OutOriginID
ORDER BY V_GoodsPlace'
else
begin
set @strSQL = '
INSERT INTO #TMPTABLE_1
SELECT V_GoodsPlace,
COUNT(*) as I_Package,
SUM(N_Weight) as N_Weight,
V_OutGrade,
V_Customer,
V_PurchaseType,
dbo.FUN_GetProductionAreaName(I_OutOriginID) AS V_AreaName
FROM V_NPick_StorageStream
GROUP BY V_GoodsPlace,V_OutGrade,V_Customer,V_PurchaseType,I_OutOriginID
ORDER BY V_GoodsPlace'
end
execute(@strSQL)
-- 货位小计信息
SELECT COUNT(*) as GoodsPlaceCnt,SUM(I_Package) as PackageSum,SUM(N_Weight) as WeightSum FROM #TMPTABLE_1
-- 实现交叉功能
-- Powred by:CHENQP
-- Commit Date:11:22 2006-10-30
SELECT
V_GoodsPlaceA=max(case id%7 when 0 then V_GoodsPlace end),
I_PackageA=max(case id%7 when 0 then I_Package end),
N_WeightA=max(case id%7 when 0 then N_Weight end),
V_OutGradeA =max(case id%7 when 0 then V_OutGrade end),
V_CustomerA =max(case id%7 when 0 then V_Customer end),
V_PurchaseTypeA=max(case id%7 when 0 then V_PurchaseType end),
V_AreaNameA=max(case id%7 when 0 then V_AreaName end),
V_GoodsPlaceB=max(case id%7 when 1 then V_GoodsPlace end),
I_PackageB=max(case id%7 when 1 then I_Package end),
N_WeightB=max(case id%7 when 1 then N_Weight end),
V_OutGradeB =max(case id%7 when 1 then V_OutGrade end),
V_CustomerB =max(case id%7 when 1 then V_Customer end),
V_PurchaseTypeB=max(case id%7 when 1 then V_PurchaseType end),
V_AreaNameB=max(case id%7 when 1 then V_AreaName end),
V_GoodsPlaceC=max(case id%7 when 2 then V_GoodsPlace end),
I_PackageC=max(case id%7 when 2 then I_Package end),
N_WeightC=max(case id%7 when 2 then N_Weight end),
V_OutGradeC =max(case id%7 when 2 then V_OutGrade end),
V_CustomerC =max(case id%7 when 2 then V_Customer end),
V_PurchaseTypeC=max(case id%7 when 2 then V_PurchaseType end),
V_AreaNameC=max(case id%7 when 2 then V_AreaName end),
V_GoodsPlaceD=max(case id%7 when 3 then V_GoodsPlace end),
I_PackageD=max(case id%7 when 3 then I_Package end),
N_WeightD=max(case id%7 when 3 then N_Weight end),
V_OutGradeD =max(case id%7 when 3 then V_OutGrade end),
V_CustomerD =max(case id%7 when 3 then V_Customer end),
V_PurchaseTypeD=max(case id%7 when 3 then V_PurchaseType end),
V_AreaNameD=max(case id%7 when 3 then V_AreaName end),
V_GoodsPlaceE=max(case id%7 when 4 then V_GoodsPlace end),
I_PackageE=max(case id%7 when 4 then I_Package end),
N_WeightE=max(case id%7 when 4 then N_Weight end),
V_OutGradeE =max(case id%7 when 4 then V_OutGrade end),
V_CustomerE =max(case id%7 when 4 then V_Customer end),
V_PurchaseTypeE=max(case id%7 when 4 then V_PurchaseType end),
V_AreaNameE=max(case id%7 when 4 then V_AreaName end),
V_GoodsPlaceF=max(case id%7 when 5 then V_GoodsPlace end),
I_PackageF=max(case id%7 when 5 then I_Package end),
N_WeightF=max(case id%7 when 5 then N_Weight end),
V_OutGradeF =max(case id%7 when 5 then V_OutGrade end),
V_CustomerF =max(case id%7 when 5 then V_Customer end),
V_PurchaseTypeF=max(case id%7 when 5 then V_PurchaseType end),
V_AreaNameF=max(case id%7 when 5 then V_AreaName end),
V_GoodsPlaceG=max(case id%7 when 6 then V_GoodsPlace end),
I_PackageG=max(case id%7 when 6 then I_Package end),
N_WeightG=max(case id%7 when 6 then N_Weight end),
V_OutGradeG =max(case id%7 when 6 then V_OutGrade end),
V_CustomerG =max(case id%7 when 6 then V_Customer end),
V_PurchaseTypeG=max(case id%7 when 6 then V_PurchaseType end),
V_AreaNameG=max(case id%7 when 6 then V_AreaName end)
FROM
(SELECT Top 100000 *,
(SELECT COUNT(*) FROM #TMPTABLE_1 WHERE IDD <= a.IDD)
AS id
FROM #TMPTABLE_1 a ORDER BY V_GoodsPlace,I_Package ) b
GROUP BY (b.id-1)/7
ORDER BY (b.id-1)/7
END
set QUOTED_IDENTIFIER ON
go
-- =============================================
-- Author: CHENQP
-- Create date: 9:37 2006-10-30
-- Description: 获取挑选库存货位信息查询、用于领导决策系统
-- 交叉实现七行并成一行
-- =============================================
ALTER PROCEDURE [dbo].[usp_TBManagerQuery_GetResortedTLWarehouse]
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS
BEGIN
SET NOCOUNT ON;
declare @strSQL varchar(5000) -- 主语句
Create Table #TMPTABLE_1(IDD int identity(1,1),
V_GoodsPlace VARCHAR(50) ,I_Package INT ,
N_Weight DECIMAL(18,3),V_OutGrade VARCHAR(50),
V_Customer VARCHAR(50),V_PurchaseType VARCHAR(50),V_AreaName VARCHAR(50))
if @strWhere !=''
set @strSQL = '
INSERT INTO #TMPTABLE_1
SELECT V_GoodsPlace,
COUNT(*) as I_Package,
SUM(N_Weight) as N_Weight,
V_OutGrade,
V_Customer,
V_PurchaseType,
dbo.FUN_GetProductionAreaName(I_OutOriginID) AS V_AreaName
FROM V_NPick_StorageStream where '
+ @strWhere +
'GROUP BY V_GoodsPlace,V_OutGrade,V_Customer,V_PurchaseType,I_OutOriginID
ORDER BY V_GoodsPlace'
else
begin
set @strSQL = '
INSERT INTO #TMPTABLE_1
SELECT V_GoodsPlace,
COUNT(*) as I_Package,
SUM(N_Weight) as N_Weight,
V_OutGrade,
V_Customer,
V_PurchaseType,
dbo.FUN_GetProductionAreaName(I_OutOriginID) AS V_AreaName
FROM V_NPick_StorageStream
GROUP BY V_GoodsPlace,V_OutGrade,V_Customer,V_PurchaseType,I_OutOriginID
ORDER BY V_GoodsPlace'
end
execute(@strSQL)
-- 货位小计信息
SELECT COUNT(*) as GoodsPlaceCnt,SUM(I_Package) as PackageSum,SUM(N_Weight) as WeightSum FROM #TMPTABLE_1
-- 实现交叉功能
-- Powred by:CHENQP
-- Commit Date:11:22 2006-10-30
SELECT
V_GoodsPlaceA=max(case id%7 when 0 then V_GoodsPlace end),
I_PackageA=max(case id%7 when 0 then I_Package end),
N_WeightA=max(case id%7 when 0 then N_Weight end),
V_OutGradeA =max(case id%7 when 0 then V_OutGrade end),
V_CustomerA =max(case id%7 when 0 then V_Customer end),
V_PurchaseTypeA=max(case id%7 when 0 then V_PurchaseType end),
V_AreaNameA=max(case id%7 when 0 then V_AreaName end),
V_GoodsPlaceB=max(case id%7 when 1 then V_GoodsPlace end),
I_PackageB=max(case id%7 when 1 then I_Package end),
N_WeightB=max(case id%7 when 1 then N_Weight end),
V_OutGradeB =max(case id%7 when 1 then V_OutGrade end),
V_CustomerB =max(case id%7 when 1 then V_Customer end),
V_PurchaseTypeB=max(case id%7 when 1 then V_PurchaseType end),
V_AreaNameB=max(case id%7 when 1 then V_AreaName end),
V_GoodsPlaceC=max(case id%7 when 2 then V_GoodsPlace end),
I_PackageC=max(case id%7 when 2 then I_Package end),
N_WeightC=max(case id%7 when 2 then N_Weight end),
V_OutGradeC =max(case id%7 when 2 then V_OutGrade end),
V_CustomerC =max(case id%7 when 2 then V_Customer end),
V_PurchaseTypeC=max(case id%7 when 2 then V_PurchaseType end),
V_AreaNameC=max(case id%7 when 2 then V_AreaName end),
V_GoodsPlaceD=max(case id%7 when 3 then V_GoodsPlace end),
I_PackageD=max(case id%7 when 3 then I_Package end),
N_WeightD=max(case id%7 when 3 then N_Weight end),
V_OutGradeD =max(case id%7 when 3 then V_OutGrade end),
V_CustomerD =max(case id%7 when 3 then V_Customer end),
V_PurchaseTypeD=max(case id%7 when 3 then V_PurchaseType end),
V_AreaNameD=max(case id%7 when 3 then V_AreaName end),
V_GoodsPlaceE=max(case id%7 when 4 then V_GoodsPlace end),
I_PackageE=max(case id%7 when 4 then I_Package end),
N_WeightE=max(case id%7 when 4 then N_Weight end),
V_OutGradeE =max(case id%7 when 4 then V_OutGrade end),
V_CustomerE =max(case id%7 when 4 then V_Customer end),
V_PurchaseTypeE=max(case id%7 when 4 then V_PurchaseType end),
V_AreaNameE=max(case id%7 when 4 then V_AreaName end),
V_GoodsPlaceF=max(case id%7 when 5 then V_GoodsPlace end),
I_PackageF=max(case id%7 when 5 then I_Package end),
N_WeightF=max(case id%7 when 5 then N_Weight end),
V_OutGradeF =max(case id%7 when 5 then V_OutGrade end),
V_CustomerF =max(case id%7 when 5 then V_Customer end),
V_PurchaseTypeF=max(case id%7 when 5 then V_PurchaseType end),
V_AreaNameF=max(case id%7 when 5 then V_AreaName end),
V_GoodsPlaceG=max(case id%7 when 6 then V_GoodsPlace end),
I_PackageG=max(case id%7 when 6 then I_Package end),
N_WeightG=max(case id%7 when 6 then N_Weight end),
V_OutGradeG =max(case id%7 when 6 then V_OutGrade end),
V_CustomerG =max(case id%7 when 6 then V_Customer end),
V_PurchaseTypeG=max(case id%7 when 6 then V_PurchaseType end),
V_AreaNameG=max(case id%7 when 6 then V_AreaName end)
FROM
(SELECT Top 100000 *,
(SELECT COUNT(*) FROM #TMPTABLE_1 WHERE IDD <= a.IDD)
AS id
FROM #TMPTABLE_1 a ORDER BY V_GoodsPlace,I_Package ) b
GROUP BY (b.id-1)/7
ORDER BY (b.id-1)/7
END
相关文章推荐
- 笔记:不写一行代码,实现 DropDownList 和 GridView 联动
- 公交查询系统(笔记)--T-sql 的从句 for xml path('') 实现多行合并到一行, 并带有分隔符
- 黑马程序员之HTML学习笔记:rowspan属性实现HTML表格中一列跨越多行,colspan 属性实现HTML表格中一行跨越多列
- 安卓 实现Recyclerview中的分割线(新手笔记-9)
- 学习笔记一:使用Mutex实现线程之间互斥
- android 用户界面笔记之Button和ImageButton实现按钮响应事件两种方法
- jquery 实现增加一行tr,删除一行tr
- 轻量级远程调用框架-Hessian学习笔记-Demo实现
- 【代码笔记】HTML+CSS+JavaScript实现密码输入框显示文字
- 交叉编译ortp、osip2、eXosip2、mediastreamer2及其附带的库实现SIP软电话
- 使用JTextPane代替JTextArea实现每一行的字的颜色不一样
- Sql Server-实现多行合并为一行的SQL语句
- Django框架学习笔记(10.基于ORM实现简单的用户登录)
- 项目笔记:5.利用nginx七层分发器实现基于内容的分发
- 项目笔记:7.利用智能DNS实现大并发流量切割
- 实现HTTP服务器 笔记一IO函数
- Java Web学习笔记(二)密码一致性检测的实现
- 资源 | 数十种TensorFlow实现案例汇集:代码+笔记
- Android之TextView实现跑马灯的效果(笔记)