ALTER PROCEDURE [dbo].[SL_P_Seo_SD_Class]
@YEAR VARCHAR(50),
@AREA VARCHAR(50)
AS
set nocount on
begin
SELECT
'SD非常规' AS SD非常规,
T4.FName AS 小类,
CONVERT(varchar(7), b.FDate, 120) AS 年月, SUM(a.FAuxQty) AS 合计数量, SUM(a.FConsignAmount) AS 合计金额, t3.FModel AS 型号,
t3.FName AS 名称, t3.FNumber AS 代码
INTO #Seo_SD_Class
FROM dbo.ICStockBillEntry AS a LEFT OUTER JOIN
dbo.ICStockBill AS b ON a.FInterID = b.FInterID LEFT OUTER JOIN
dbo.t_Organization AS t2 ON b.FSupplyID = t2.FItemID LEFT OUTER JOIN
dbo.t_ICItem AS t3 ON t3.FItemID = a.FItemID LEFT OUTER JOIN
dbo.t_Emp AS t7 ON t7.FItemID = t2.Femployee LEFT OUTER JOIN
dbo.t_SubMessage AS t4 ON t4.FInterID = T3.F_131 LEFT OUTER JOIN
--dbo.t_SubMessage AS t6 ON t6.FInterID = t3.FTypeID LEFT OUTER JOIN
--dbo.CRM_Province AS t8 ON t8.FID = t2.FProvinceID LEFT OUTER JOIN
t_SeoStockoutEntry t10 on t10.FItemId=a.FItemID
WHERE (a.FItemId NOT IN (SELECT FItemID FROM t_SeoStockoutEntry)) AND (b.FDate like '%'+@YEAR+'%') and ( b.FHeadSelfB0163 like '%'+isnull(@AREA,b.FHeadSelfB0163)+'%') and (b.FTranType = 21) AND (b.FStatus <>0) AND (b.FCancellation = 0) AND T4.FParentID=10019
GROUP BY t3.FModel, b.FDate, t3.FNumber, t3.FName, b.FHeadSelfB0163,t10.FItemId,a.FItemID ,t2.FName,T4.FNAME
select isnull(SD非常规,'合计') as 大类 ,isnull(小类,'合计') as 小类
,SUM(case 年月 when @YEAR+'-01' then 合计数量 else 0 end) as '一月数量'
,SUM(case 年月 when @YEAR+'-01' then 合计金额 else 0 end) as '一月金额'
,SUM(case 年月 when @YEAR+'-02' then 合计数量 else 0 end) as '二月数量'
,SUM(case 年月 when @YEAR+'-02' then 合计金额 else 0 end) as '二月金额'
,SUM(case 年月 when @YEAR+'-03' then 合计数量 else 0 end) as '三月数量'
,SUM(case 年月 when @YEAR+'-03' then 合计金额 else 0 end) as '三月金额'
,SUM(case 年月 when @YEAR+'-04' then 合计数量 else 0 end) as '四月数量'
,SUM(case 年月 when @YEAR+'-04' then 合计金额 else 0 end) as '四月金额'
,SUM(case 年月 when @YEAR+'-05' then 合计数量 else 0 end) as '五月数量'
,SUM(case 年月 when @YEAR+'-05' then 合计金额 else 0 end) as '五月金额'
,SUM(case 年月 when @YEAR+'-06' then 合计数量 else 0 end) as '六月数量'
,SUM(case 年月 when @YEAR+'-06' then 合计金额 else 0 end) as '六月金额'
,SUM(case 年月 when @YEAR+'-07' then 合计数量 else 0 end) as '七月数量'
,SUM(case 年月 when @YEAR+'-07' then 合计金额 else 0 end) as '七月金额'
,SUM(case 年月 when @YEAR+'-08' then 合计数量 else 0 end) as '八月数量'
,SUM(case 年月 when @YEAR+'-08' then 合计金额 else 0 end) as '八月金额'
,SUM(case 年月 when @YEAR+'-09' then 合计数量 else 0 end) as '九月数量'
,SUM(case 年月 when @YEAR+'-09' then 合计金额 else 0 end) as '九月金额'
,SUM(case 年月 when @YEAR+'-10' then 合计数量 else 0 end) as '十月数量'
,SUM(case 年月 when @YEAR+'-10' then 合计金额 else 0 end) as '十月金额'
,SUM(case 年月 when @YEAR+'-11' then 合计数量 else 0 end) as '十一月数量'
,SUM(case 年月 when @YEAR+'-11' then 合计金额 else 0 end) as '十一月金额'
,SUM(case 年月 when @YEAR+'-12' then 合计数量 else 0 end) as '十二月数量'
,SUM(case 年月 when @YEAR+'-12' then 合计金额 else 0 end) as '十二月金额'
,SUM(case 年月 when @YEAR+'-01' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-02' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-03' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-04' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-05' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-06' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-07' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-08' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-09' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-10' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-11' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-12' then 合计数量 else 0 end)
as '合计数量'
,SUM(case 年月 when @YEAR+'-01' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-02' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-03' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-04' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-05' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-06' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-07' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-08' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-09' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-10' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-11' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-12' then 合计金额 else 0 end)
as '合计金额'
from #Seo_SD_Class
where 年月 like '%'+@YEAR+'%' and 小类 is not null
group by SD非常规,小类 with rollup
SELECT
'SD常规' AS SD常规,
T4.FName AS 小类,
CONVERT(varchar(7), b.FDate, 120) AS 年月, SUM(a.FAuxQty) AS 合计数量, SUM(a.FConsignAmount) AS 合计金额, t3.FModel AS 型号,
t3.FName AS 名称, t3.FNumber AS 代码
INTO #Seo_SD_Class2
FROM dbo.ICStockBillEntry AS a LEFT OUTER JOIN
dbo.ICStockBill AS b ON a.FInterID = b.FInterID LEFT OUTER JOIN
dbo.t_Organization AS t2 ON b.FSupplyID = t2.FItemID LEFT OUTER JOIN
dbo.t_ICItem AS t3 ON t3.FItemID = a.FItemID LEFT OUTER JOIN
dbo.t_Emp AS t7 ON t7.FItemID = t2.Femployee LEFT OUTER JOIN
dbo.t_SubMessage AS t4 ON t4.FInterID = T3.F_131 LEFT OUTER JOIN
--dbo.t_SubMessage AS t6 ON t6.FInterID = t3.FTypeID LEFT OUTER JOIN
--dbo.CRM_Province AS t8 ON t8.FID = t2.FProvinceID LEFT OUTER JOIN
t_SeoStockoutEntry t10 on t10.FItemId=a.FItemID
WHERE (a.FItemId IN (SELECT FItemID FROM t_SeoStockoutEntry)) AND (b.FDate like '%'+@YEAR+'%') and ( b.FHeadSelfB0163 like '%'+isnull(@AREA,b.FHeadSelfB0163)+'%') and (b.FTranType = 21) AND (b.FStatus <>0) AND (b.FCancellation = 0) AND T4.FParentID=10019
GROUP BY t3.FModel, b.FDate, t3.FNumber, t3.FName, b.FHeadSelfB0163,t10.FItemId,a.FItemID ,t2.FName,T4.FNAME
select isnull(SD常规,'合计') as 大类 ,isnull(小类,'合计') as 小类
,SUM(case 年月 when @YEAR+'-01' then 合计数量 else 0 end) as '一月数量'
,SUM(case 年月 when @YEAR+'-01' then 合计金额 else 0 end) as '一月金额'
,SUM(case 年月 when @YEAR+'-02' then 合计数量 else 0 end) as '二月数量'
,SUM(case 年月 when @YEAR+'-02' then 合计金额 else 0 end) as '二月金额'
,SUM(case 年月 when @YEAR+'-03' then 合计数量 else 0 end) as '三月数量'
,SUM(case 年月 when @YEAR+'-03' then 合计金额 else 0 end) as '三月金额'
,SUM(case 年月 when @YEAR+'-04' then 合计数量 else 0 end) as '四月数量'
,SUM(case 年月 when @YEAR+'-04' then 合计金额 else 0 end) as '四月金额'
,SUM(case 年月 when @YEAR+'-05' then 合计数量 else 0 end) as '五月数量'
,SUM(case 年月 when @YEAR+'-05' then 合计金额 else 0 end) as '五月金额'
,SUM(case 年月 when @YEAR+'-06' then 合计数量 else 0 end) as '六月数量'
,SUM(case 年月 when @YEAR+'-06' then 合计金额 else 0 end) as '六月金额'
,SUM(case 年月 when @YEAR+'-07' then 合计数量 else 0 end) as '七月数量'
,SUM(case 年月 when @YEAR+'-07' then 合计金额 else 0 end) as '七月金额'
,SUM(case 年月 when @YEAR+'-08' then 合计数量 else 0 end) as '八月数量'
,SUM(case 年月 when @YEAR+'-08' then 合计金额 else 0 end) as '八月金额'
,SUM(case 年月 when @YEAR+'-09' then 合计数量 else 0 end) as '九月数量'
,SUM(case 年月 when @YEAR+'-09' then 合计金额 else 0 end) as '九月金额'
,SUM(case 年月 when @YEAR+'-10' then 合计数量 else 0 end) as '十月数量'
,SUM(case 年月 when @YEAR+'-10' then 合计金额 else 0 end) as '十月金额'
,SUM(case 年月 when @YEAR+'-11' then 合计数量 else 0 end) as '十一月数量'
,SUM(case 年月 when @YEAR+'-11' then 合计金额 else 0 end) as '十一月金额'
,SUM(case 年月 when @YEAR+'-12' then 合计数量 else 0 end) as '十二月数量'
,SUM(case 年月 when @YEAR+'-12' then 合计金额 else 0 end) as '十二月金额'
,SUM(case 年月 when @YEAR+'-01' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-02' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-03' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-04' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-05' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-06' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-07' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-08' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-09' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-10' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-11' then 合计数量 else 0 end)
+ SUM(case 年月 when @YEAR+'-12' then 合计数量 else 0 end)
as '合计数量'
,SUM(case 年月 when @YEAR+'-01' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-02' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-03' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-04' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-05' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-06' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-07' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-08' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-09' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-10' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-11' then 合计金额 else 0 end)
+ SUM(case 年月 when @YEAR+'-12' then 合计金额 else 0 end)
as '合计金额'
from #Seo_SD_Class2
where 年月 like '%'+@YEAR+'%' and 小类 is not null
group by SD常规,小类 with rollup
SELECT * FROM #Seo_SD_Class2
UNION --合并
SELECT * FROM #Seo_SD_Class
DROP TABLE #Seo_SD_Class
DROP TABLE #Seo_SD_Class2
END 优化以上语句