1800radiatoranalytics of 1-800 Radiator-SQL Codes
4/13/2017 - 6:34 PM

New OOS report...maybe?

New OOS report...maybe?

									
IF OBJECT_ID('tempdb..#RegRank') IS NOT NULL											
	drop table #RegRank										
											
SELECT whdc											
	,category										
	,finalcuc										
	,SUM(whquant1yr) RegionalSales										
	,SUM(whlookups1yr) RegionalLookups										
	,ROW_NUMBER() OVER(PARTITION BY whdc,category ORDER BY SUM(whquant1yr) DESC, ntlrk1yr) RegSalesRank										
	,ROW_NUMBER() OVER(PARTITION BY whdc,category ORDER BY SUM(WHlookups1yr) DESC, ntlrk1yr) RegLookupRank																			
INTO #RegRank											
FROM product_24.dbo.inv_CUC_WH											
WHERE category IN ('radiator','ac-cond','comprex','fan_ass','Snd_mod')--,'drierx','achosex')											
	and finalcuc NOT LIKE '%00000%'										
GROUP BY whdc											
	,category										
	,finalcuc										
	,ntlrk1yr										

											



/**********************************************************											
											
	 Create table with CUC level details 										
	    - to calculate weighting per CUC 										
											
**********************************************************/											

DROP TABLE #RegDetails
SELECT a.*
	,b.CategoryTotalSales TotalSales
	,a.RegionalSales*1.0 / b.CategoryTotalSales*1.0 SalesWeighting
INTO #RegDetails	
FROM #RegRank a
	LEFT JOIN (
			SELECT whdc
				,category
				,SUM(RegionalSales) CategoryTotalSales
			FROM #RegRank
			GROUP BY whdc
				,category
				) b
		ON a.whdc = b.whdc
		AND a.category = b.category			
								
									
											
											
/*********************************************************************************											
											
	 Create base table that has every warehouse/CUC combination for OOS										
											
*********************************************************************************/											
IF OBJECT_ID('tempdb..#InStock') IS NOT NULL											
	drop table #InStock										
											
SELECT W.whseregion											
	,W.warehouseid										
	,RD.Category										
	,RD.finalcuc		
	,CAST(0 AS INT) LateModelInd								
	,RD.RegSalesRank										
	,RD.TotalSales RegionalCategorySales
	,CAST(0 AS INT) [1yr Lookups]
	,CAST(0 AS INT) [1yr Sales]
	,CAST(0 AS INT) DaysOOS	
	,rd.SalesWeighting								
	--,CAST(0 AS BIT) InStock										
	,CAST(0 AS BIT) OnHand
	,CAST(0 AS BIT) OnOrder										
	,CAST(0 AS INT) CurrrentROH
	,CAST(0 AS INT) RecROH										
	,CAST(0 AS INT) Priority										
INTO #InStock											
FROM #RegDetails RD											
	CROSS JOIN _Boris.dbo.VW_Warehouse W										
where RD.whdc = W.whseregion
									
											
											
-- Update on Hand by warehouse											
UPDATE I											
SET I.OnHand = OH.OnHand
	,I.OnOrder = OH.OnOrder
FROM #InStock I											
	 JOIN (										
		SELECT SW.Warehouseid									
			,IT.cuc								
			,SUM(SW.StockWarehouseOnHand) OnHand
			,SUM(SW.StockWarehouseOnOrderHigh + SW.StockWarehouseOnOrderHigh) OnOrder
		FROM gxWizmo_24.dbo.STOCKWAREHOUSE SW									
			JOIN product_10.dbo.lu_item IT								
			  ON SW.StockItem = IT.item	
		WHERE SW.StockWarehouseOnHand + SW.StockWarehouseOnOrderHigh + SW.StockWarehouseOnOrderHigh > 0 
		GROUP BY SW.Warehouseid									
			,IT.cuc								
		) OH									
	ON I.WarehouseID = OH.Warehouseid										
	 AND I.finalcuc = OH.cuc										
											


											
											
-- Update warehouse Sales Qty & RecROH											
UPDATE I											
SET I.[1yr Sales] = RO.WHquant1yr											
	,I.[1yr Lookups] = RO.WHLookups1yr
	,I.RecROH = ISNULL(RO.newbaseno,0)
	,I.LatemodelInd = RO.latemodelind
	,I.DaysOOS = RO.DaysOOS										
FROM #InStock I											
	JOIN (SELECT rte_wh										
				,finalcuc							
				,whquant1yr							
				,WHLookups1yr
				,latemodelind
				,newbaseno	
				,DaysOOS						
		  FROM product_24.dbo.inv_cuc_wh									
		  ) RO									
	   ON I.WarehouseID = RO.rte_wh										
	    AND I.finalcuc = RO.finalcuc

	    


	
-- Update Current ROH											
UPDATE I											
SET I.CurrrentROH = ISNULL(SU.SUGROHROH,0)
FROM #InStock I											
	JOIN gxWizmo_24.dbo.SUGROH SU
	  ON I.WarehouseID = SU.Warehouseid
	   AND I.finalcuc = SU.StockCUC
	    

	  										
-- Delete records WHERE Recommended RecROH = 0											
DELETE FROM #InStock											
WHERE RecROH = 0
	and Category IN (SELECT DISTINCT Category FROM #InStock WHERE RecROH > 0 )  											



											
											
----  Set Priorities for each CUC based on Regional Rank WHERE RecROH > 0											
-- Priority number is used to select the top 450 ranked Radiators - and excluding parts where RecROH = 0 											
UPDATE I											
SET I.Priority = C.Priority											
FROM #InStock I											
	JOIN  (										
			SELECT Warehouseid								
				,finalcuc							
				,ROW_NUMBER() OVER (Partition BY WarehouseID, Category ORDER BY RegSalesRank) Priority 							
			FROM #InStock								
			) C								
	 ON I.WarehouseID = C.WarehouseID										
	  AND I.Finalcuc = C.Finalcuc										
											
											

/*
Only need data for top parts: 
Radiators = top 450 regional
Condensers = top 250 regional
Fans= top 200 Regional
Snd_mod = top 200 regional
*/											
											
-- Core Category Maintenance											
-- Delete records that shouldn't be counted in the OOS Calculation											
DELETE FROM I											
-- SELECT I.* 											
FROM #InStock I																				
WHERE  ( I.category = 'Radiator'  AND Priority > 450) 										
	OR ( I.category = 'ac-cond'   AND Priority > 250)								
	OR ( I.category = 'Comprex'   AND Priority > 150)							
	OR ( I.category = 'Fan_Ass'   AND Priority > 200)							
	OR ( I.category = 'snd_mod'   AND Priority > 200)								
											
											
							
-- Clean up all other categories											
-- Delete records that shouldn't be counted in the OOS Calculation											
DELETE FROM I											
--SELECT I.* 											
FROM #InStock I																				
WHERE I.category NOT IN ( 'Radiator' ,'ac-cond','Comprex','Fan_Ass','snd_mod')																				

	
DROP TABLE #Temp1
SELECT a.*
	,b.Weighting
	,CASE WHEN OnHand > 0 THEN SalesWeighting ELSE 0 END UseThis
		,CASE WHEN a.category = 'Radiator' AND priority BETWEEN 1 AND 25 THEN '1 To 25'
		  WHEN a.category = 'Radiator' AND priority BETWEEN 26 AND 100 THEN '26 To 100'
		  WHEN a.category = 'Radiator' AND priority BETWEEN 101 AND 200 THEN '101 To 200'
		  WHEN a.category = 'Radiator' AND priority BETWEEN 201 AND 450 THEN '201 To 450'
		  WHEN a.category = 'Ac-Cond' AND priority BETWEEN 1 AND 25 THEN '1 To 25'
		  WHEN a.category = 'Ac-Cond' AND priority BETWEEN 26 AND 100 THEN '26 To 100'
		  WHEN a.category = 'Ac-Cond' AND priority BETWEEN 101 AND 250 THEN '101 To 250'
		  WHEN a.category = 'Fan_Ass' AND priority BETWEEN 1 AND 25 THEN '1 To 25'
		  WHEN a.category = 'Fan_Ass' AND priority BETWEEN 26 AND 100 THEN '26 To 100'
		  WHEN a.category = 'Fan_Ass' AND priority BETWEEN 101 AND 250 THEN '101 To 200'
		  WHEN a.category = 'Snd_Mod' AND priority BETWEEN 1 AND 10 THEN '1 To 10'
		  WHEN a.category = 'Snd_Mod' AND priority BETWEEN 11 AND 25 THEN '11 To 25'
		  WHEN a.category = 'Snd_Mod' AND priority BETWEEN 26 AND 50 THEN '26 To 50'
		  WHEN a.category = 'Snd_Mod' AND priority BETWEEN 51 AND 200 THEN '51 And 200'
		  WHEN a.category = 'Comprex' AND priority BETWEEN 1 AND 25 THEN '1 To 25'
		  WHEN a.category = 'Comprex' AND priority BETWEEN 26 AND 75 THEN '26 To 75'
		  WHEN a.category = 'Comprex' AND priority BETWEEN 76 AND 150 THEN '76 AND 150'
			END Bucket
INTO #Temp1	
FROM #InStock a
	JOIN (
		SELECT warehouseid
			,category
			,SUM(salesweighting) Weighting
		FROM #InStock
		GROUP BY warehouseid
			,category
	) b
		ON a.warehouseid = b.warehouseid
		AND a.category = b.category	
		


SELECT warehouseid
	,category
	,Bucket
	,SUM(CASE WHEN OnHand = 0 THEN 1 ELSE 0 END)*1.0 OOS
FROM #Temp1
GROUP BY warehouseid
	,category
	,Bucket

UNION

SELECT warehouseid	
	,category
	,'Total OOS' Bucket
	,1 - (SUM(UseThis) / Weighting) OOS
FROM #Temp1
GROUP BY warehouseid
	,category
	,Weighting
	
ORDER BY warehouseid
	,category
	,Bucket