Advertisement
Guest User

sql

a guest
May 25th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 7.60 KB | None | 0 0
  1. DECLARE
  2.  
  3. @startDate DATE,
  4.  
  5. @endDate DATE
  6.  
  7.  
  8.  
  9. DECLARE @resultsTable TABLE (
  10.  
  11.        Wono INT,
  12.  
  13.        EquipmentCount INT,
  14.  
  15.        PersonnelCount INT,
  16.  
  17.        PMPEquipmentCount INT,
  18.  
  19.        PMPPersonnelCount INT,
  20.  
  21.        EquipmentDifference INT,
  22.  
  23.        PersonnelDifference INT
  24.  
  25. )
  26.  
  27.  
  28.  
  29. DECLARE @personnelTable TABLE (
  30.  
  31.        Wono INT,
  32.  
  33.        PersonnelCount INT
  34.  
  35. )
  36.  
  37.  
  38.  
  39. DECLARE @pmpTable TABLE (
  40.  
  41.        WorkOrderNo INT,
  42.  
  43.        EquipmentCount INT,
  44.  
  45.        PersonnelCount INT
  46.  
  47. )
  48.  
  49.  
  50.  
  51. DECLARE @pmpPersonnel TABLE (
  52.  
  53.        WorkorderNo INT,
  54.  
  55.        personnelcount INT
  56.  
  57. )
  58.  
  59.  
  60.  
  61. SET @startDate = '4/18/2018'
  62.  
  63. SET @endDate = '4/30/2018'
  64.  
  65.  
  66.  
  67. INSERT INTO @resultsTable (Wono, EquipmentCount)
  68.  
  69.        SELECT
  70.  
  71.              Wono,
  72.  
  73.              COUNT(wono) AS EquipmentCount
  74.  
  75.        FROM (SELECT
  76.  
  77.             Wono,
  78.  
  79.              iiae.[InvoiceItemActualEquipmentId] AS InvoiceItemEquipmentId,
  80.  
  81.              iiae.[TaskItemActualEquipmentId] AS TaskItemEquipmentId
  82.  
  83.        FROM [FDSS_Prod].[dbo].[InvoiceItemActualEquipment] iiae
  84.  
  85.        INNER JOIN [dbo].[TaskItemActualEquipment] tiae
  86.  
  87.              ON tiae.TaskItemActualEquipmentId = iiae.TaskItemActualEquipmentId
  88.  
  89.        INNER JOIN [dbo].[TaskItemPlanEquipment] tipe
  90.  
  91.              ON tipe.TaskItemPlanEquipmentId = tiae.TaskItemPlanEquipmentId
  92.  
  93.        INNER JOIN [dbo].[TaskItem] ti
  94.  
  95.              ON ti.TaskItemId = tipe.TaskItemId
  96.  
  97.        CROSS APPLY (SELECT TOP 1
  98.  
  99.              *
  100.  
  101.        FROM TaskItemWorkOrderLink
  102.  
  103.        WHERE TaskItemId = ti.TaskItemId
  104.  
  105.        AND isactive = 1
  106.  
  107.        ORDER BY updatetimestamp DESC) tiwo
  108.  
  109.        WHERE CONVERT(DATE, DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), ti.TASkItemActualStartTime)) BETWEEN @startDate AND @endDate
  110.  
  111.        UNION
  112.  
  113.        SELECT
  114.  
  115.              Wono,
  116.  
  117.              iiae.[InvoiceItemActualOtherEquipmentId] AS InvoiceItemEquipmentId,
  118.  
  119.              iiae.[TaskItemActualOtherEquipmentId] AS TaskItemEquipmentId
  120.  
  121.        FROM [FDSS_Prod].[dbo].[InvoiceItemActualOtherEquipment] iiae
  122.  
  123.        INNER JOIN [dbo].[TaskItemActualOtherEquipment] tiae
  124.  
  125.              ON tiae.TaskItemActualOtherEquipmentId = iiae.TaskItemActualOtherEquipmentId
  126.  
  127.        INNER JOIN [dbo].[TaskItem] ti
  128.  
  129.              ON ti.TaskItemId = tiae.TaskItemId
  130.  
  131.        CROSS APPLY (SELECT TOP 1
  132.  
  133.              *
  134.  
  135.        FROM TaskItemWorkOrderLink
  136.  
  137.        WHERE TaskItemId = ti.TaskItemId
  138.  
  139.        AND isactive = 1
  140.  
  141.        ORDER BY updatetimestamp DESC) tiwo
  142.  
  143.        WHERE CONVERT(DATE, DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), ti.TASkItemActualStartTime)) BETWEEN @startDate AND @endDate) AS Equipment
  144.  
  145.        GROUP BY Wono
  146.  
  147.        ORDER BY Wono
  148.  
  149.  
  150.  
  151. INSERT INTO @personnelTable (wono, PersonnelCount)
  152.  
  153.        SELECT
  154.  
  155.              Wono,
  156.  
  157.              COUNT(wono) AS PersonnelCount
  158.  
  159.        FROM (SELECT
  160.  
  161.              Wono,
  162.  
  163.              iiap.[InvoiceItemActualPersonnelId] AS InvoiceItemPersonnelId,
  164.  
  165.              iiap.[TaskItemActualPersonnelId] AS TaskItemPersonnelId
  166.  
  167.        FROM [FDSS_Prod].[dbo].[InvoiceItemActualPersonnel] iiap
  168.  
  169.        INNER JOIN [dbo].[TaskItemActualPersonnel] tiap
  170.  
  171.              ON tiap.TaskItemActualPersonnelId = iiap.TaskItemActualPersonnelId
  172.  
  173.        INNER JOIN [dbo].[TaskItemPlanPersonnel] tipe
  174.  
  175.              ON tipe.TaskItemPlanPersonnelId = tiap.TaskItemPlanPersonnelId
  176.  
  177.        INNER JOIN [dbo].[TaskItem] ti
  178.  
  179.              ON ti.TaskItemId = tipe.TaskItemId
  180.  
  181.        CROSS APPLY (SELECT TOP 1
  182.  
  183.              *
  184.  
  185.        FROM TaskItemWorkOrderLink
  186.  
  187.        WHERE TaskItemId = ti.TaskItemId
  188.  
  189.        AND isactive = 1
  190.  
  191.        ORDER BY updatetimestamp DESC) tiwo
  192.  
  193.        WHERE CONVERT(DATE, DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), ti.TASkItemActualStartTime)) BETWEEN @startDate AND @endDate
  194.  
  195.        UNION
  196.  
  197.        SELECT
  198.  
  199.              Wono,
  200.  
  201.              iiap.[InvoiceItemActualOtherPersonnelId] AS InvoiceItemPersonnelId,
  202.  
  203.              iiap.[TaskItemActualOtherPersonnelId] AS TaskItemPersonnelId
  204.  
  205.        FROM [FDSS_Prod].[dbo].[InvoiceItemActualOtherPersonnel] iiap
  206.  
  207.        INNER JOIN [dbo].[TaskItemActualOtherPersonnel] tiap
  208.  
  209.              ON tiap.TaskItemActualOtherPersonnelId = iiap.TaskItemActualOtherPersonnelId
  210.  
  211.       INNER JOIN [dbo].[TaskItem] ti
  212.  
  213.              ON ti.TaskItemId = tiap.TaskItemId
  214.  
  215.        CROSS APPLY (SELECT TOP 1
  216.  
  217.              *
  218.  
  219.        FROM TaskItemWorkOrderLink
  220.  
  221.        WHERE TaskItemId = ti.TaskItemId
  222.  
  223.        AND isactive = 1
  224.  
  225.        ORDER BY updatetimestamp DESC) tiwo
  226.  
  227.        WHERE CONVERT(DATE, DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), ti.TASkItemActualStartTime)) BETWEEN @startDate AND @endDate) AS Personnel
  228.  
  229.        GROUP BY Wono
  230.  
  231.        ORDER BY Wono
  232.  
  233.  
  234.  
  235. INSERT INTO @resultsTable (wono, PersonnelCount)
  236.  
  237.        SELECT
  238.  
  239.              p.wono,
  240.  
  241.              p.personnelcount
  242.  
  243.        FROM @personnelTable p
  244.  
  245.        LEFT OUTER JOIN @resultsTable r
  246.  
  247.              ON r.Wono = p.wono
  248.  
  249.        WHERE r.wono IS NULL
  250.  
  251.  
  252.  
  253. UPDATE r
  254.  
  255. SET r.PersonnelCount = p.PersonnelCount
  256.  
  257. FROM @resultsTable r
  258.  
  259. INNER JOIN @personnelTable p
  260.  
  261.        ON r.Wono = p.Wono
  262.  
  263.  
  264.  
  265. INSERT INTO @pmpTable (WorkOrderNo, EquipmentCount)
  266.  
  267.        SELECT
  268.  
  269.              WorkOrderNo,
  270.  
  271.              COUNT(workorderno) AS EquipmentCount
  272.  
  273.        FROM [PMP2007].dbo.WOEquipment woe
  274.  
  275.        INNER JOIN [pmp2007].[dbo].[WorkOrder] wo
  276.  
  277.              ON wo.WorkOrderNo = woe.EquipWONo
  278.  
  279.        INNER JOIN @resultsTable rt
  280.  
  281.              ON rt.wono = wo.workorderno
  282.  
  283.        WHERE CONVERT(DATE, DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), wo.WOActualWODate)) BETWEEN @startDate AND @endDate
  284.  
  285.        GROUP BY WorkOrderNo
  286.  
  287.  
  288.  
  289. INSERT INTO @pmpPersonnel (WorkorderNo, Personnelcount)
  290.  
  291.        SELECT
  292.  
  293.              Workorderno,
  294.  
  295.              COUNT(workorderno) AS PersonnelCount
  296.  
  297.        FROM [PMP2007].[dbo].[WOEmployees] woe
  298.  
  299.        INNER JOIN [PMP2007].[dbo].WorkOrder wo
  300.  
  301.              ON wo.WorkOrderNo = woe.empwono
  302.  
  303.        INNER JOIN @resultstable rt
  304.  
  305.              ON rt.wono = wo.workorderno
  306.  
  307.        WHERE CONVERT(DATE, DATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), wo.WOActualWODate)) BETWEEN @startDate AND @endDate
  308.  
  309.        GROUP BY WorkOrderNo
  310.  
  311.  
  312.  
  313. INSERT INTO @pmpTable (WorkOrderNo, PersonnelCount)
  314.  
  315.        SELECT
  316.  
  317.              p.workorderno,
  318.  
  319.              p.personnelcount
  320.  
  321.        FROM @pmpPersonnel p
  322.  
  323.        LEFT OUTER JOIN @pmpTable r
  324.  
  325.              ON r.WorkOrderNo = p.WorkorderNo
  326.  
  327.        WHERE r.WorkOrderNo IS NULL
  328.  
  329.  
  330.  
  331. UPDATE r
  332.  
  333. SET r.PersonnelCount = p.PersonnelCount
  334.  
  335. FROM @pmpTable r
  336.  
  337. INNER JOIN @pmppersonnel p
  338.  
  339.        ON r.WorkOrderNo = p.WorkOrderNo
  340.  
  341.  
  342.  
  343. UPDATE r
  344.  
  345. SET r.pmpequipmentcount = p.equipmentcount
  346.  
  347. FROM @resultsTable r
  348.  
  349. INNER JOIN @pmpTable p
  350.  
  351.        ON r.Wono = p.WorkOrderNo
  352.  
  353.  
  354.  
  355. UPDATE r
  356.  
  357. SET r.PMPPersonnelCount = p.PersonnelCount
  358.  
  359. FROM @resultsTable r
  360.  
  361. INNER JOIN @pmpTable p
  362.  
  363.        ON r.Wono = p.WorkOrderNo
  364.  
  365.  
  366.  
  367. UPDATE @resultsTable
  368.  
  369. SET EquipmentDifference = PMPEquipmentCount - EquipmentCount,
  370.  
  371. PersonnelDifference = PMPPersonnelCount - PersonnelCount
  372.  
  373.  
  374.  
  375. SELECT
  376.  
  377.        Wono AS WorkOrderNumber,
  378.  
  379.        ISNULL(EquipmentCount, 0) AS NeptuneEquipmentCount,
  380.  
  381.        ISNULL(PersonnelCount, 0) AS NeptunePersonnelCount,
  382.  
  383.        ISNULL(PMPEquipmentCount, 0) AS PMPEquipmentCount,
  384.  
  385.        ISNULL(PMPPersonnelCount, 0) AS PMPPersonnelCount,
  386.  
  387.        ISNULL(EquipmentDifference, 0) AS EquipmentDifference,
  388.  
  389.        ISNULL(PersonnelDifference, 0) AS PersonnelDifference
  390.  
  391. FROM @resultsTable
  392.  
  393. WHERE EquipmentDifference != 0 OR PersonnelDifference != 0
  394.  
  395. ORDER BY Wono ASC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement