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
Preview:
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