Hi zusammen,
ich stehe derzeit vor folgender Herausforderung. Im Zuge versendeter Rechnungen, versenden wir bei Nichtzahlung Zahlungserinnerungen per E-Mail. Folgendes Statement soll Auskunft darüber geben, wie der Status Quo der jeweiligen Rechnungen ist:
Das Statement an sich funktioniert auch und wirft eine entsprechende Übersicht aus. In oben genannten Statement habe ich, wie ihr seht, konkret auf einen Fall gefiltert, um euch das Problem besser zu schildern, welches mich umtreibt. Hier das Ergebnis:
Wie ihr seht, habe ich in der Spalte Zahlungserinnerung das unterste Datum rot markiert, denn genau dieses ist falsch. Hier soll gar nichts eingetragen werden, da der Zahlungseingang bereits erfolgte und hierfür keine Zahlungserinnerung versendet wurde. Die Spalte "Z-Erinnerung" (Datum der Zahlungserinnerungs-EMail) ist für alle drei Zeilen ausgefüllt, weil die Abfrage sie über die TaimID und nicht über die Rechnung verknüpft wird.
Richtig wäre hier, wenn die obersten beiden Zeilen einen Eintrag bei Z-Erinnerung hätten, die untere Zeile jedoch nicht.
Lässt sich so eine Spalte irgendwie dynamisch gestalten, ähnlich wie bei Excel, ähnlich einer Wenn-Dann Abfrage? Hierzu müssten folgende Spalten in Abhängigkeit gebracht werden:
Besten Dank für euren Input.
LG Felix
ich stehe derzeit vor folgender Herausforderung. Im Zuge versendeter Rechnungen, versenden wir bei Nichtzahlung Zahlungserinnerungen per E-Mail. Folgendes Statement soll Auskunft darüber geben, wie der Status Quo der jeweiligen Rechnungen ist:
HTML Code:
/* List of invoices */ SELECT tl.id AS ptid, iv.invoice_number as ReNr, CASE WHEN iv.invoice_type_id = '1' THEN 'Supplier' WHEN iv.invoice_type_id = '2' THEN 'Company' END as 'Typ', LEFT(iv.created_at,10) as ReDatum, ivp.`type` AS 'Anteil', CASE WHEN ivp.`type` = 'Office' THEN ROUND((ivp.value/100),2) END as 'Betrag Global', CASE WHEN ivp.`type` = 'Agent' THEN ROUND((ivp.value/100),2) END as 'Betrag M', LEFT(PaymentReminderSentAt,10) as 'Z-Erinnerung', ROUND(ta.value/100,2) as 'Zahlung', LEFT(ta.`date`,10) as 'am', c.name AS 'Payment_Z' FROM invoices iv LEFT JOIN taims tl ON (iv.taim_id = tl.id) LEFT JOIN company c ON (tl.company_id=c.id) LEFT JOIN invoice_parts ivp ON (ivp.invoice_id = iv.id) LEFT JOIN invoice_part_transaction ivpt ON (ivpt.invoice_part_id = ivp.id) LEFT JOIN transactions ta ON (ta.id = ivpt.transaction_id) LEFT JOIN (SELECT eml.taim_id, MAX(eml.sent_at) AS PaymentReminderSentAt FROM emails eml WHERE eml.deleted_at IS NULL AND eml.template LIKE 'Zahlungserinnerung%' GROUP BY taim_id) AS em ON (em.taim_id=tl.id) WHERE iv.deleted_at IS NULL AND iv.value != '0' And tl.id = '72' ORDER BY iv.invoice_number ASC
ptid | ReNr | Typ | ReDatum | Betrag Global | Betrag M | Z-Erinnerung | Zahlung | am | company | |
72 | 8544 | Company | 13.12.2018 | 200 | 11.10.2019 | Sample Ldt | ||||
72 | 8544 | Company | 13.12.2018 | 800 | 11.10.2019 | Sample Ldt | ||||
72 | 8555 | Supplier | 16.02.2019 | 300 | 11.10.2019 | 300 | 13.03.2019 | Sample Ldt |
Richtig wäre hier, wenn die obersten beiden Zeilen einen Eintrag bei Z-Erinnerung hätten, die untere Zeile jedoch nicht.
Lässt sich so eine Spalte irgendwie dynamisch gestalten, ähnlich wie bei Excel, ähnlich einer Wenn-Dann Abfrage? Hierzu müssten folgende Spalten in Abhängigkeit gebracht werden:
- Wenn Datum der Zahlungserinnerung (Spalte "Z-Erinnerung") < (kleiner) des Rechnungsdatums, dann lasse die Zelle leer
- Wenn Zahlungseingang (Spalte "am") < (kleiner) der Spalte Zahlungserinnerung und Betrag der Spalte "Zahlung" = Summe der Spalte (Betrag Global + Betrag M) dann lasse die Spalte leer
- Alle anderen Szenarien = befülle die Spalte
Besten Dank für euren Input.
LG Felix
Comment