Preview:
WITH DispatchStops AS(
SELECT 
	DispatchKey,
	MAX( loader ) LoadAt_Customer,
	MAX( loaderarea ) AreaCode_Pickup,
	CASE WHEN MAX( tcall ) IS NULL THEN MAX( final ) ELSE MAX( tcall ) END Drop_Customer,
	CASE WHEN MAX( tcall ) IS NULL THEN MAX( finalarea ) ELSE MAX( tcallarea ) END AreaCode_Drop,
	MAX( TCALL ) TCALL,
	MAX( arrivalcallcts ) arrivalcallcts
FROM
( SELECT 
	DispatchKey,
	CASE WHEN Stopnumber = 1 THEN stopcustomercode END loader,
	CASE WHEN Stopnumber = 90 THEN Stopcustomercode END final,
	CASE WHEN Stopnumber = 99 THEN stopcustomercode END tcall,
	CASE WHEN Stopnumber = 1 THEN PU_Area_Code END loaderarea,
	CASE WHEN Stopnumber = 90 THEN PU_Area_Code END finalarea,
	CASE WHEN Stopnumber = 99 THEN PU_Area_Code END tcallarea,
	CASE WHEN StopNumber = 1 THEN CONVERT( DATETIME, arrivalcalltimestamputc ) AT TIME ZONE 'UTC' AT TIME ZONE 'Mountain Standard Time' END arrivalcallcts
FROM(
	SELECT 
		CONCAT( ordernumber, '-',  dispatchnumber ) DispatchKey, stopnumber, StopCustomerCode, PU_Area_Code, arrivalcalltimestamputc 
	FROM [mvtebi_dw_ops].[dw_ops].[platsci].[amqp_dispatchstops] amqp
		LEFT JOIN ops.tbl_Dim_ICC_Customer Customer
			ON amqp.stopcustomercode = Customer.Customer_Code AND Customer.ETL_Current_Row = 1
	WHERE StopRemovedTimeStampUTC IS NULL 
) AS CustomerMaster 
) AS StopType
GROUP BY DispatchKey
 
), FactDisp AS (
SELECT 
	tractor.division,
	Tractor_Code_Trimmed,
	driver1.Driver_Code DriverCode1,
	CASE WHEN Dispatch_Num = 1 THEN loaderarea.Area_Code ELSE AreaCode_pickup END RoutelinePickup,
	CASE WHEN TCall IS NOT NULL THEN AreaCode_Drop WHEN Dispatch_Num = finaldispatch THEN dropperarea.Area_Code END RoutelineDrop,
	CONCAT( fd.Order_Num, '-', Dispatch_Num ) DispatchKey,
	CASE
		WHEN DATEDIFF( HOUR, LAG( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), Dispatch_Datetime )>= 24 
			THEN Dispatch_Datetime
	END NAIVESTART,
	CASE
		WHEN DATEDIFF( HOUR, Dispatch_End_Datetime, LEAD( Dispatch_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ))>= 24
			THEN NULL
		WHEN 
			DATEDIFF( HOUR, LAG( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), Dispatch_Datetime )>= 24  -- naive
		OR
			( 
				DATEDIFF( HOUR, LAG( Dispatch_Datetime, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime ), LAG( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime ))
					-( 
						( CAST((( LAG( Total_Miles, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime )) / 565 ) AS INT )*10 )  
						+( CAST(( LAG( Total_Miles, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime ) / 565 ) AS INT )*11 )   
						+( 
							CAST( 
									11*((( CONVERT( DECIMAL( 8, 3 ),  LAG( Total_miles, 1 ) OVER( PARTITION BY	Driver1.Driver_Code ORDER BY Dispatch_Datetime )) 
									/ CONVERT( DECIMAL( 8, 5 ), 565 ))) - (  LAG( Total_miles, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime ) / 565 )) AS INT 
								)
						)	
					)
			)  >= 20 
			AND DATEDIFF( HOUR, LAG( Dispatch_End_Datetime, 2 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), LAG( Dispatch_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime )) <  20
			AND DATEDIFF( HOUR, LEAD( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), LEAD( Dispatch_Datetime, 2 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ))  < 20 
			AND DATEDIFF( HOUR, LAG( Dispatch_Datetime, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime ), LAG( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime )) <= 20
			THEN Dispatch_Datetime
	END circuitstart,
	CASE
		WHEN
			DATEDIFF( HOUR, LAG( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), Dispatch_Datetime )>= 24 
			THEN NULL
		WHEN 
			( DATEDIFF( HOUR, Dispatch_End_Datetime, LEAD( Dispatch_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ))>= 24 ) 
			THEN  Dispatch_End_Datetime	
		WHEN
			( 
				DATEDIFF( HOUR, Dispatch_Datetime, Dispatch_End_Datetime )  
					-(
						( CAST(( Total_Miles / 565 ) AS INT ) * 10 ) 
						+( CAST(( Total_Miles / 565 ) AS INT ) * 11 ) 
						+( CAST( 11*((( CONVERT( DECIMAL( 8, 3 ), Total_Miles ) / CONVERT( DECIMAL( 8, 5 ), 565 ))) - ( Total_miles / 565 )) AS INT ))
					
					) 
			) >= 24 
			AND DATEDIFF( HOUR, LAG( Dispatch_End_Datetime, 2 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), LAG( Dispatch_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ))<24
			AND DATEDIFF( HOUR, LEAD( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), LEAD( Dispatch_Datetime, 2 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ))<24
			AND ABS( DATEDIFF( HOUR, Dispatch_end_Datetime, Order_Late_Delivery_Appt )) >=5  
			OR 
				LEAD( Dispatch_datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ) IS NULL AND ( DATEDIFF( HOUR, Dispatch_End_Datetime, CURRENT_TIMESTAMP ) >= 24 )
			THEN Dispatch_End_Datetime	
	END circuitend,
	CASE 
		WHEN LEAD( Dispatch_datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ) IS NULL AND ( DATEDIFF( HOUR, Dispatch_End_Datetime, CURRENT_TIMESTAMP ) >= 24) THEN 'CASEB'
		WHEN 
			( 
				DATEDIFF( HOUR, Dispatch_Datetime, Dispatch_End_Datetime )  
					-(
						( CAST(( Total_Miles / 565 ) AS INT ) * 10 ) 
						+( CAST(( Total_Miles / 565 ) AS INT ) * 11 ) 
						+( CAST( 11*((( CONVERT( DECIMAL( 8, 3 ), Total_Miles ) / CONVERT( DECIMAL( 8, 5 ), 565 ))) - ( Total_miles / 565 )) AS INT ))
					
					) 
			) >= 24 
			AND DATEDIFF( HOUR, LAG( Dispatch_End_Datetime, 2 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), LAG( Dispatch_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ))<24
			AND DATEDIFF( HOUR, LEAD( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), LEAD( Dispatch_Datetime, 2 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ))<24
			AND ABS( DATEDIFF( HOUR, Dispatch_end_Datetime, Order_Late_Delivery_Appt )) >=5  
			THEN 'CASEA'
	END sakjfhnsaf,
	CASE
		WHEN DATEDIFF( HOUR, Dispatch_End_Datetime, LEAD( Dispatch_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime )) >= 24
			THEN Dispatch_End_Datetime
	END NAIVEEND,
	DATEDIFF( HOUR, LAG( Dispatch_Datetime, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime ), LAG( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY Driver1.Driver_Code ORDER BY Dispatch_Datetime )) laddispdur,
	DATEDIFF( HOUR, LAG( Dispatch_End_Datetime, 1 ) OVER( PARTITION BY driver1.Driver_Code ORDER BY Dispatch_Datetime ), Dispatch_Datetime ) durationbetweendispatch,
	Dispatch_Datetime, Dispatch_End_Datetime, 
	Order_Late_Delivery_Appt delappt,
	Total_Miles TotalMiles,
	DATEDIFF( HOUR, Dispatch_datetime, Dispatch_end_Datetime ) Dispduration,
	CONCAT( Driver1.City, ', ', Driver1.State ) DriverHome
FROM ops.tbl_Fact_ICC_Dispatch fd
	LEFT JOIN ops.tbl_Dim_ICC_Customer loader
		ON fd.SK_LoadAt_Customer_ID = loader.SK_Customer_ID
	LEFT JOIN ops.tbl_Dim_ICC_Customer dropper
		ON fd.SK_Consignee_Customer_ID = dropper.SK_Customer_ID
	LEFT JOIN ops.tbl_Dim_ICC_Area loaderarea
		ON fd.SK_Order_Pickup_Area_ID = loaderarea.SK_Area_ID
	LEFT JOIN ops.tbl_Dim_ICC_Area dropperarea
		ON fd.SK_Order_dest_Area_ID = dropperarea.SK_Area_ID
	LEFT JOIN ops.tbl_Dim_ICC_Unit tractor
		ON fd.SK_Unit_ID = tractor.SK_Unit_ID AND tractor.ETL_Current_Row = 1 
	LEFT JOIN hr.vw_Dim_ICC_Driver driver1
		ON fd.SK_Driver1_ID = driver1.SK_Driver_ID 
	LEFT JOIN DispatchStops
		ON CONCAT( Order_Num, '-', Dispatch_Num ) = DispatchStops.DispatchKey
	LEFT JOIN ( SELECT Order_Num, SUM( Total_Miles ) OrderTotalMiles, SUM( Empty_Miles ) OrderEmptyMiles, MAX( Dispatch_Num ) finaldispatch FROM ops.tbl_Fact_ICC_Dispatch GROUP BY Order_Num ) AS finalDispatch
		ON fd.order_num = finaldispatch.order_num
WHERE 
	DATEDIFF( DAY, Dispatch_Datetime, CURRENT_TIMESTAMP ) <= 121
	AND driver1.Driver_Code IS NOT NULL-- AND driver2.driver_code IS NULL 
	AND tractor.Division IN( '300', '200' )
	--AND driver1.Driver_Code = 'MEDWI'
--ORDER BY DriverCode1, Dispatch_Datetime
 
), CircuitIndexer AS( 
SELECT 
	Division, 
	DriverCode1,
	DriverHome,
	circuitstarter,
	circuitend,
	ROW_NUMBER() OVER( PARTITION BY DriverCode1 ORDER BY CircuitStarter ) CircuitIndex
FROM(
	SELECT 
		Division,
		DriverCode1,
		DriverHome,
		CASE WHEN circuitstart IS NULL THEN LAG( CircuitStart, 1 ) OVER( PARTITION BY DriverCode1 ORDER BY Dispatch_Datetime ) END circuitstarter, 
		circuitend
	FROM FactDisp	
		 WHERE circuitstart IS NOT NULL OR circuitend IS NOT NULL ) AS CircuitTimestamps
 
), CircuitsFactDisp AS( 
	SELECT
		FactDisp.Division,
		FactDisp.DriverCode1,
		DispatchKey,
		CircuitIndex,
		ROW_NUMBER() OVER( PARTITION BY FactDisp.DriverCode1, CircuitIndex ORDER BY Dispatch_Datetime ) ordersequence,
		CASE 
			WHEN RoutelinePickup IS NULL THEN LAG( RoutelineDrop, 1 ) OVER( PARTITION BY FactDisp.DriverCode1 ORDER BY Dispatch_Datetime )
			ELSE RoutelinePickup
		END RoutelinePickup,
		CASE
			WHEN RoutelineDrop IS NULL THEN LEAD( RoutelinePickup, 1 ) OVER( PARTITION BY FactDisp.DriverCode1 ORDER BY Dispatch_Datetime )
			WHEN RoutelineDrop IS NULL AND TotalMiles <= 66 AND RoutelinePickup IS NOT NULL THEN RoutelinePickup
			WHEN RoutelineDrop IS NULL AND TotalMiles <= 66 AND RoutelinePickup IS NULL THEN LAG( RoutelineDrop, 1 ) OVER( PARTITION BY FactDisp.DriverCode1 ORDER BY Dispatch_Datetime )
			ELSE RoutelineDrop
		END RoutelineDrop,
		CASE WHEN TotalMiles IS NULL THEN 0 ELSE TotalMiles END TotalMiles,
		Dispatch_Datetime,
		Dispatch_End_Datetime
	FROM FactDisp
		LEFT JOIN CircuitIndexer
			ON FactDisp.DriverCode1 = CircuitIndexer.DriverCode1 AND FactDisp.Dispatch_Datetime >= CircuitIndexer.circuitstarter AND FactDisp.Dispatch_End_Datetime <= CircuitIndexer.circuitend
 
), FactDispCircuitPivot AS( 

SELECT 
	Division, DriverCode1, CircuitIndex, 
	MIN( Dispatch_Datetime ) CircuitStartCTS, MAX( Dispatch_End_Datetime ) CircuitEndCTS,
	DATEDIFF( HOUR, MIN( Dispatch_Datetime ), MAX( Dispatch_End_Datetime )) CircuitDuration,
	CONCAT_WS( ' / ', MAX( [1] ), MAX( [2] ), MAX( [3] ), MAX( [4] ), MAX( [5] ), MAX( [6] ), MAX( [7] ), MAX( [8] )) CircuitRoute,
	MAX( [1] ) disp1, MAX( [2] ) disp2, MAX( [3] ) disp3, MAX( [4] ) disp4, 
	MAX( [5] ) disp5, MAX( [6] ) disp6, MAX( [7] ) disp7, MAX( [8] ) disp8,
	COALESCE( MAX( [11] ), 0 ) + COALESCE( MAX( [12] ), 0 ) + COALESCE( MAX( [13] ), 0 ) + COALESCE( MAX( [14] ), 0 ) +
	COALESCE( MAX( [15] ), 0 ) + COALESCE( MAX( [16] ), 0 ) + COALESCE( MAX( [17] ), 0 ) + COALESCE( MAX( [18] ), 0 ) CircuitMilesSum,
	MAX( [11] ) Miles1, MAX( [12] ) Miles2, MAX( [13] ) Miles3, MAX( [14] ) Miles4,
	MAX( [15] ) Miles5, MAX( [16] ) Miles6, MAX( [17] ) Miles7, MAX( [18] ) Miles8
FROM(
	SELECT 
		Division, DriverCode1, CircuitIndex, oseq,
		CONVERT( DATETIME, Dispatch_Datetime ) AT TIME ZONE 'Mountain Standard Time' AT TIME ZONE 'Mountain Standard Time' Dispatch_Datetime, 
		CONVERT( DATETIME, Dispatch_End_Datetime ) AT TIME ZONE 'Mountain Standard Time'AT TIME ZONE 'Mountain Standard Time' Dispatch_End_Datetime,
		[1], [2], [3], [4], [5], [6], [7], [8], [11], [12], [13], [14], [15], [16], [17], [18]
	FROM
(
		SELECT 
			Division, DriverCode1, CircuitIndex,
			CONCAT( routelinepickup, '-', routelinedrop ) routeline, TotalMiles, Dispatch_Datetime, Dispatch_End_Datetime, DATEDIFF( HOUR, Dispatch_Datetime, Dispatch_End_Datetime ) dispdur,
			ordersequence, ordersequence oseq, 
			ordersequence +10 oseq1
		FROM CircuitsFactDisp
		WHERE CircuitIndex IS NOT NULL
) AS pivotter
	PIVOT(
		MAX( Routeline ) FOR OrderSequence IN( [1], [2], [3], [4], [5], [6], [7], [8] )
		) AS pivotteralso
	PIVOT(
		SUM( TotalMiles ) FOR oseq1 IN( [11], [12], [13], [14], [15], [16], [17], [18] )) AS maxxertable
) AS pivotter2
GROUP BY Division, DriverCode1, CircuitIndex

), unIpivit AS( 
SELECT 
	Division, DriverCode1,  CircuitIndex, RIGHT( OrderSequeunce, 1 ) ordersequence, Routeline, CircuitRoute, CircuitMilesSum,
	LEFT( Routeline, 3 ) RoutelinePickup, RIGHT( Routeline, 3 ) RoutelineDrop--, TotalMiles
FROM(
	SELECT * FROM FactDispCircuitPivot
) as Z
	UNPIVOT( Routeline FOR OrderSequeunce IN( [disp1], [disp2], [disp3], [disp4], [disp5], [disp6] )
) AS unpi
	
), Fuel AS( 
SELECT
	CONCAT_WS( '-', Order_Num, Dispatch_Num ) dskey,
	Station_ID_Code, Station_Name, 
	MAX( Station_City ) City, MAX( State ) State, SUM( Quantity  ) quant
FROM ( SELECT *  FROM ops.vw_Purchased_Fuel WHERE DATEDIFF( DAY, Transaction_Datetime, CURRENT_TIMESTAMP ) < 133 ) AS Z
GROUP BY CONCAT_WS( '-', Order_Num, Dispatch_Num ), Station_ID_Code, Station_Name
)
SELECT *
FROM(
	SELECT 
		z.Division, z.DriverCode1, z.CircuitIndex, z.ordersequence, Routeline, CircuitRoute, CircuitMilesSum,
		TotalMiles, Dispatch_Datetime, DispatchKey
	FROM unIpivit z
		LEFT JOIN CircuitsFactDisp y 
			ON z.DriverCode1 = y.DriverCode1 AND z.CircuitIndex = y.CircuitIndex AND z.Routeline = concat( y.RoutelinePickup, '-', y.RoutelineDrop )
	WHERE CircuitRoute IN( 
		'CO1-NM3 / NM3-ELP / ELP-CA7 / CA7-CO1',
		'NM3-ELP / ELP-CA7 / CA4-CO1 / CO1-NM3',
		'ELP-CA7 / CA4-CO1 / CO1-NM3 / NM3-ELP',
		'ELP-CA4 / CA4-CO1 / CO1-ELP',
		'ELP-TX2 / TX2-CO1 / CO1-NM3 / NM3-ELP',
		'ELP-TX2 / TX2-CO1 / CO1-CO1 / CO1-NM3 / NM3-ELP',
		'ELP-TX2 / TX2-CO1 / CO1-ELP'
	)) AS z
		LEFT JOIN Fuel y
			ON z.DispatchKey = y.dskey 


 ORDER BY Division, CircuitRoute, DriverCode1, CircuitIndex, ordersequence
downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter