Advertisement
Guest User

Untitled

a guest
Aug 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.38 KB | None | 0 0
  1. Sub TopAway()
  2. Dim Cnn As Object
  3. Dim Rst As Object
  4. Dim ConnectionString, SqlTextFile, SqlStatement As String
  5. Set Cnn = CreateObject("ADODB.Connection")
  6. Set Rst = CreateObject("ADODB.Recordset")
  7.  
  8. Application.ScreenUpdating = False
  9.  
  10. ThisWorkbook.Sheets("Summary").Range("A2:T3000").ClearContents
  11.  
  12. ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server = 10.1.1.201; Database = cms; Uid = root; Pwd = something;"
  13.  
  14. Cnn.Open ConnectionString
  15. Cnn.CommandTimeout = 900
  16.  
  17. SqlTextFile = "C:UsersadamDesktopWORK FOLDERTony ProjectAnalysis ProjectsAway_No_StockDynamic_Away.sql"
  18. Debug.Print SqlTextFile
  19. Dim hFile As Long
  20. hFile = FreeFile
  21. Open SqlTextFile For Input As #hFile
  22. SqlStatement = Input$(LOF(hFile), hFile)
  23. Close #hFile
  24. Debug.Print SqlStatement
  25.  
  26. Rst.Open SqlStatement, Cnn
  27.  
  28. Sheets("Summary").Range("B3").CopyFromRecordset Rst
  29. End Sub
  30.  
  31. SELECT
  32. GROUP_CONCAT(DISTINCT
  33. CONCAT("SUM(IF((part_id IN (265,302,647) OR notes REGEXP ('away|unfit|unavailable|bus away|night')) && WEEKOFYEAR(job_engineerdate) = '", WEEKOFYEAR(job_engineerdate) , "' , 1 ,0)) AS '", WEEKOFYEAR(job_engineerdate), "'")
  34. )
  35. INTO @answers
  36. FROM (
  37. SELECT DISTINCT (job_engineerdate)
  38. FROM job j
  39. ORDER BY (job_engineerdate) ASC
  40. ) A
  41. WHERE job_engineerdate >= CURDATE() - INTERVAL 112 DAY AND job_engineerdate <= CURDATE();
  42.  
  43.  
  44. SET @query = CONCAT("SELECT customer_name, garage_name, ", @answers, "
  45. FROM (
  46. SELECT c.customer_name, g.garage_name, j.id, jp.part_id, jn.notes, j.job_engineerdate
  47.  
  48. FROM job j
  49. INNER JOIN vehicle v ON j.job_vehicleid = v.id
  50. INNER JOIN garage g ON v.garage_id = g.id
  51. INNER JOIN customer c ON g.customer_id = c.id
  52. INNER JOIN fault_type ft ON j.job_fault = ft.id
  53. INNER JOIN job_parts jp ON j.id = jp.job_id
  54. INNER JOIN part p ON p.id = jp.part_id
  55. INNER JOIN job_notes jn ON j.id = jn.job_id
  56. INNER JOIN users u ON j.job_engineer = u.id
  57.  
  58. WHERE
  59. c.customer_group IN (13) AND
  60. j.deleted = 0
  61. AND j.job_engineerdate >= CURDATE() - INTERVAL 112 DAY
  62.  
  63. GROUP BY
  64. v.vehicle_fleet_number, v.id, j.id, jp.part_id, jn.id
  65.  
  66. ORDER BY customer_name, garage_name
  67. ) AS T
  68. GROUP BY customer_name, garage_name
  69. ORDER BY 18 DESC
  70. LIMIT 15")
  71. ;
  72.  
  73. PREPARE stmt FROM @query;
  74. EXECUTE stmt;
  75. DEALLOCATE PREPARE stmt;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement