diff --git a/Queries/Hilfepläne mit aktuellen Bewilligungen - mit Stunden, Leistungskategorien UND Betreuern.txt b/Queries/Hilfepläne mit aktuellen Bewilligungen - mit Stunden, Leistungskategorien UND Betreuern.txt new file mode 100644 index 000000000..f5e43b466 --- /dev/null +++ b/Queries/Hilfepläne mit aktuellen Bewilligungen - mit Stunden, Leistungskategorien UND Betreuern.txt @@ -0,0 +1,78 @@ +-- Query- für Herrn Ferchland - 2385915144 (APP6) +-- Hilfepläne mit aktuellen Bewilligungen (max 3 Bew mit Leistungskategorie u Stunden / Woche + Betreuern) + +SELECT + base.Nachname, base.Vorname, base.Kostentraeger, base.`Bewilligt von`, base.`Bewilligt bis`, base.`Bewilligung 1`, base.`Stunden 1`, + -- Betreuer für SCAP 1 + (SELECT GROUP_CONCAT(CONCAT(p2.`FirstName`, ' ', p2.`LastName`) ORDER BY scap2e.EmployeeOid SEPARATOR ', ') + FROM supportconceptapprovalperiod2employee scap2e + INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid` + INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid` + WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap1_oid + ) AS 'Betreuer 1', + base.`Bewilligung 2`, base.`Stunden 2`, + -- Betreuer für SCAP 2 + (SELECT GROUP_CONCAT( + CONCAT(p2.`FirstName`, ' ', p2.`LastName`) + ORDER BY scap2e.EmployeeOid SEPARATOR ', ') + FROM supportconceptapprovalperiod2employee scap2e + INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid` + INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid` + WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap2_oid + ) AS 'Betreuer 2', + base.`Bewilligung 3`, base.`Stunden 3`, + -- Betreuer für SCAP 3 + (SELECT GROUP_CONCAT( + CONCAT(p2.`FirstName`, ' ', p2.`LastName`) + ORDER BY scap2e.EmployeeOid SEPARATOR ', ') + FROM supportconceptapprovalperiod2employee scap2e + INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid` + INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid` + WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap3_oid + ) AS 'Betreuer 3' + +FROM ( + -- Kernabfrage Bewilligungen ohne Betreuuer + SELECT + p.LastName AS Nachname, + p.FirstName AS Vorname, + o.`Name` AS Kostentraeger, + cb2sc.ApprovedStartDate AS 'Bewilligt von', + cb2sc.ApprovedEndDate AS 'Bewilligt bis', + MAX(CASE WHEN scap.rn = 1 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 1', + MAX(CASE WHEN scap.rn = 1 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat1.Name) END) AS 'Bewilligung 1', + MAX(CASE WHEN scap.rn = 2 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 2', + MAX(CASE WHEN scap.rn = 2 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat2.Name) END) AS 'Bewilligung 2', + MAX(CASE WHEN scap.rn = 3 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 3', + MAX(CASE WHEN scap.rn = 3 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat3.Name) END) AS 'Bewilligung 3', + -- Hilfsspalten: OIDs der 4 SCRAPs für die Betreuer-Subqueries + MAX(CASE WHEN scap.rn = 1 THEN scap.Oid END) AS scap1_oid, + MAX(CASE WHEN scap.rn = 2 THEN scap.Oid END) AS scap2_oid, + MAX(CASE WHEN scap.rn = 3 THEN scap.Oid END) AS scap3_oid + FROM `person` p + INNER JOIN `customer` c ON p.Oid = c.PersonOid + LEFT JOIN team2customer t2c ON c.Oid = t2c.CustomerOid + LEFT JOIN team t ON t2c.TeamOid = t.Oid + INNER JOIN `supportconcept` sc ON c.Oid = sc.CustomerOid + INNER JOIN `costbearer2supportconcept` cb2sc ON sc.Oid = cb2sc.SupportConceptOid + INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid` + INNER JOIN `organisation` o ON cb.`Oid` = o.`CostBearerOid` + INNER JOIN ( + SELECT s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval, + s1.Start, s1.EndDate, s1.ServiceCategoryOid, s1.Notice, + COUNT(s2.Oid) + 1 AS rn + FROM `supportconceptapprovalperiod` s1 + LEFT JOIN `supportconceptapprovalperiod` s2 + ON s1.CostBearer2SupportConceptOid = s2.CostBearer2SupportConceptOid + -- AND s1.Start <= CURDATE() AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE()) + AND (s2.Start < s1.Start OR (s2.Start = s1.Start AND s2.Oid < s1.Oid)) + -- WHERE s1.Start <= CURDATE() AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE()) + GROUP BY s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval, s1.Start, s1.EndDate, s1.ServiceCategoryOid, s1.Notice + ) scap ON cb2sc.Oid = scap.CostBearer2SupportConceptOid + LEFT JOIN servicecategory cat1 ON scap.ServiceCategoryOid = cat1.Oid AND scap.rn = 1 + LEFT JOIN servicecategory cat2 ON scap.ServiceCategoryOid = cat2.Oid AND scap.rn = 2 + LEFT JOIN servicecategory cat3 ON scap.ServiceCategoryOid = cat3.Oid AND scap.rn = 3 + WHERE c.IsActive = 1 AND sc.IsActive = 1 + GROUP BY p.Oid, p.LastName, p.FirstName, p.DateOfBirth, o.`Name`, cb2sc.ApprovedStartDate, cb2sc.ApprovedEndDate + ORDER BY t.Name, p.LastName +) base; \ No newline at end of file