Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 8.23 KB | None | 0 0
  1. SELECT
  2.        GROUP_CONCAT(WP.Id),
  3.        IF(UI.NationalIdentityNumber IS NULL OR UI.NationalIdentityNumber = '', '0',
  4.           UI.NationalIdentityNumber)                                                                                    NationalIdentityNumber,
  5.        CASE
  6.            WHEN GROUP_CONCAT(DISTINCT WP.id) LIKE '%,%' THEN
  7.                 (SELECT WP2.id FROM WorkforcePersonal WP2 WHERE WP2.id IN (GROUP_CONCAT(WP.Id)) AND WP2.tenant = E.tenant LIMIT 1)
  8.            ELSE GROUP_CONCAT(DISTINCT WP.id) END                                                                     AS WorkforcePersonalId,
  9.        GROUP_CONCAT(DISTINCT UI.Tenant ORDER BY UI.Tenant DESC)                                                                              AS tenant,
  10.        GROUP_CONCAT(DISTINCT UI.GivenName)                                                                           AS GivenName,
  11.        GROUP_CONCAT(DISTINCT UI.FamilyName)                                                                          AS FamilyName,
  12.        CASE
  13.            WHEN GROUP_CONCAT(DISTINCT WP.id) LIKE '%,%' THEN
  14.                 TIMESTAMPDIFF(YEAR, (SELECT WP2.BirthDate FROM WorkforcePersonal WP2 WHERE WP2.id IN (GROUP_CONCAT(WP.Id)) AND WP2.tenant = E.tenant LIMIT 1), CURDATE())
  15.            ELSE TIMESTAMPDIFF(YEAR, WP.BirthDate, CURDATE())  END                                                    AS age,
  16.        GROUP_CONCAT(DISTINCT WP.Gender)                                                                              AS gender,
  17.        CASE
  18.            WHEN GROUP_CONCAT(DISTINCT WP.PreferredGivenName) IS NULL THEN CONCAT(GROUP_CONCAT(DISTINCT UI.GivenName),
  19.                                                                                  ' ',
  20.                                                                                  GROUP_CONCAT(DISTINCT UI.FamilyName))
  21.            ELSE CONCAT(GROUP_CONCAT(DISTINCT WP.PreferredGivenName), ' ',
  22.                        GROUP_CONCAT(DISTINCT UI.FamilyName)) END                                                     AS DisplayName,
  23.        GROUP_CONCAT(DISTINCT WP.DisplayCode)                                                                         AS DisplayCode,
  24.        GROUP_CONCAT(DISTINCT UI.Email)                                                                               AS Email,
  25.        GROUP_CONCAT(DISTINCT A.AddressLine1)                                                                         AS AddressLine1,
  26.        GROUP_CONCAT(DISTINCT A.AddressLine2)                                                                         AS AddressLine2,
  27.        GROUP_CONCAT(DISTINCT A.AddressLine3)                                                                         AS AddressLine3,
  28.        GROUP_CONCAT(DISTINCT A.AddressLine4)                                                                         AS AddressLine4,
  29.        GROUP_CONCAT(DISTINCT WP.HomePhone)                                                                           AS HomePhone,
  30.        CASE
  31.            WHEN GROUP_CONCAT(DISTINCT WP.FullTimeEquivalentAvailable) LIKE '%,%' OR NULL THEN 0
  32.            ELSE GROUP_CONCAT(DISTINCT WP.FullTimeEquivalentAvailable) END                                            AS FullTimeEquivalentAvailable,
  33.        CASE
  34.            WHEN GROUP_CONCAT(DISTINCT WP.BirthDate) LIKE '%,%' THEN
  35.                 (SELECT WP2.BirthDate FROM WorkforcePersonal WP2 WHERE WP2.id IN (GROUP_CONCAT(WP.Id)) AND WP2.tenant = E.tenant LIMIT 1)
  36.            ELSE DATE(GROUP_CONCAT(DISTINCT WP.BirthDate)) END                                                        AS BirthDate,
  37.        CASE
  38.            WHEN GROUP_CONCAT(DISTINCT WP.Invigilator) LIKE '%,%' THEN
  39.                 (SELECT WP2.Invigilator FROM WorkforcePersonal WP2 WHERE WP2.id IN (GROUP_CONCAT(WP.Id)) AND WP2.tenant = E.tenant LIMIT 1)
  40.            ELSE GROUP_CONCAT(DISTINCT WP.Invigilator) END                                                            AS Invigilator,
  41.        CASE
  42.            WHEN GROUP_CONCAT(DISTINCT WP.Examiner) LIKE '%,%' THEN
  43.                 (SELECT WP2.Examiner FROM WorkforcePersonal WP2 WHERE WP2.id IN (GROUP_CONCAT(WP.Id)) AND WP2.tenant = E.tenant LIMIT 1)
  44.            ELSE GROUP_CONCAT(DISTINCT WP.Examiner) END                                                               AS Examiner,
  45.        GROUP_CONCAT(DISTINCT E.Department)                                                                           AS Department,
  46.        GROUP_CONCAT(DISTINCT WP.LeftSchool)                                                                          AS LeftSchool,
  47.        GROUP_CONCAT(DISTINCT SIMAIN.SchoolName)                                                                      AS MainSchools,
  48.        GROUP_CONCAT(DISTINCT UI.UserRole)                                                                            AS role,
  49.        GROUP_CONCAT(DISTINCT SI.SchoolName)                                                                          AS Schools,
  50.        MAX(E.jobTitle) AS jobTitle,
  51.        MAX(E.positionCode) AS positionCode,
  52.        MAX(E.seniority) AS seniority,
  53.        MAX(E.startDate) AS startDate,
  54.        MAX(E.endDate) AS endDate,
  55.        (CASE
  56.             WHEN E.includeInTimetabling IS NULL THEN 'Y'
  57.             WHEN E.includeInTimetabling = 'YES' THEN 'Y'
  58.             ELSE 'N' END)                                                                                            AS includeInTimetabling,
  59.        MAX(E.mainJob) AS mainJob,
  60.        MAX(E.tenant)                                                                                                      AS employmentTenant,
  61.        SUSN.SubNumber                                                                                               AS smsSubNumber
  62. FROM WorkforcePersonal WP
  63.          JOIN UserInfo UI ON UI.Id = WP.UserInfoId AND UI.UserRole != 'ROLE_LEARNER'
  64.          LEFT JOIN (SELECT E.*
  65.                     FROM Employment E
  66.                              INNER JOIN (SELECT ordered.id, ordered.tenant, ordered.NationalIdentityNumber
  67.                                          FROM (SELECT id, tenant, NationalIdentityNumber, mainJob, active
  68.                                                FROM Employment
  69.                                                GROUP BY tenant, NationalIdentityNumber, mainJob, active
  70.                                                HAVING CASE
  71.                                                           WHEN mainJob = 1 THEN mainJob = 1
  72.                                                           ELSE (COUNT(1) = 1 OR (COUNT(1) > 1 AND ACTIVE = 1)) END
  73.                                                ORDER BY Tenant DESC, MainJob DESC, Active DESC) ordered
  74.                                          GROUP BY ordered.tenant, ordered.NationalIdentityNumber) filtered
  75.                                         ON filtered.id = E.id) E
  76.                    ON E.nationalIdentityNumber = UI.NationalIdentityNumber AND E.Tenant = UI.Tenant
  77.          LEFT JOIN UserAssociatedSchool UAS ON UAS.userInfoId = UI.Id AND UAS.dateTo IS NULL
  78.          LEFT JOIN UserAssociatedSchool UASMAIN
  79.                    ON UASMAIN.userInfoId = UI.Id AND UASMAIN.mainSchool = TRUE AND UASMAIN.dateTo IS NULL
  80.          LEFT JOIN SchoolInfo SI ON SI.Tenant = UAS.Tenant
  81.          LEFT JOIN SchoolInfo SIMAIN ON SIMAIN.Tenant = UASMAIN.Tenant
  82.          LEFT JOIN WorkforcePersonal_Address WPA ON WPA.WorkforcePersonal_Id = WP.Id AND WPA.Tenant = WP.Tenant AND
  83.                                                     (WPA.addressList_Id = (SELECT MAX(WPA2.addressList_Id)
  84.                                                                            FROM WorkforcePersonal_Address WPA2
  85.                                                                            WHERE WPA2.WorkforcePersonal_Id = WP.Id
  86.                                                                              AND WPA2.Tenant = WP.Tenant))
  87.          LEFT JOIN Address A ON A.Id = WPA.addressList_Id
  88.          LEFT JOIN SmsUserSubNumber SUSN ON UI.Tenant = SUSN.Tenant AND UI.Id = SUSN.UserInfoId
  89. WHERE WP.Tenant IN (12612098, 2041)
  90.   AND 1 = 1
  91.   AND WP.LeftSchool <> 'Y'
  92.   AND UI.UserRole IN ('ROLE_PRINCIPAL', 'ROLE_TEACHER', 'ROLE_BASIC', 'ROLE_EXTERNALS_ADMIN')
  93. GROUP BY IF(UI.NationalIdentityNumber IS NULL OR UI.NationalIdentityNumber = '', UI.Id, UI.NationalIdentityNumber)
  94. ORDER BY CONCAT(UI.FamilyName, UI.GivenName) ASC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement