0

Anzahl von Datensätzen zählen bzw. in Ansicht zeigen

Ich bin am verzweifeln, da ich wohl vollkommen auf dem Schlauch stehe!

Ich habe eine Kontakttabelle und eine Berichtstabelle. Für jeden Kontakt kann es beliebig viele Berichte geben. Die Tabellen sind verknüpft (Kontakte mit Berichte 1:N).

Nun möchte ich in einer Auswertung zählen, wieviele Kontakte es in einem bestimmten Zeitraum mit wenigstens einem Bericht gibt.

Dazu hatte ich folgende Idee:

let myAuswertungStart := 'Auswertung Start';
let myAuswertungEnde := 'Auswertung Ende';
cnt(select Kontakte where Berichte.Beratungsdatum >= myAuswertungStart and Berichte.Beratungsdatum <= myAuswertungEnde)

Es kommt zwar was raus, aber wenn ich die Einträge zur Kontrolle per Hand, bekomme ich einen anderen Wert.

Meine zweite Idee war, nicht von der Kontakttabelle auszugehen, sondern von der Berichtstabelle aus. Also:

let myAuswertungStart := 'Auswertung Start';
let myAuswertungEnde := 'Auswertung Ende';
cnt(select Berichte where Beratungsdatum >= myAuswertungStart and Beratungsdatum <= myAuswertungEnde)

Nur dann bekomme ich alle Berichte im Zeitraum gezählt. Ich will ja aber die Anzahl der Kontakte wissen. Also wieviele verschiedene Kontakte hatte ich für meine x Berichte im Zeitraum y.

Mir fehlt da einfach ... Ich weiss nicht was! Kann mir jemand helfen?

5 Antworten

null
    • neon_scarf
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo ich bin leider noch nicht soweit mit meinen Kenntnissen, dass ich Deine Formel umstellen kann. Ich habe das aber ähnlich in einem Dashboard zum Zählen von Rechnungen schon gemacht und vielleicht hilft Dir der Ansatz ja weiter.

    Ich habe 2 Datumsfelder angelegt Start und Ende und dann folgende Formel /// "Rechnungen" ist die Tabelle in der ersuchen soll  und "sum(Rechnungspositionen.Bruttopreis))" addiert die der Rechnungspositionen

    let xBeg := 'Start Datum';
    let xEnd := 'End Datum';
    count((select Rechnungen)[RgDatum >= xBeg and RgDatum <= xEnd].sum(Rechnungspositionen.Bruttopreis))

    VG

    Andreas

    • Handwerkskammer Frankfurt-Rhein-Main
    • Christian_JuraszKischka
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Andreas,

    vielen Dank für Deinen Hinweis. Es hat zwar nicht direkt funktioniert, hat mich aber irgendwie auf eine Idee gebracht ;-)

    Meine Lösung:

    let myAuswertungStart := 'Auswertung Start';
    let myAuswertungEnde := 'Auswertung Ende';
    let alleBerichteImZeitraum := (select Berichte where Beratungsdatum >= myAuswertungStart and Beratungsdatum <= myAuswertungEnde).Kontakt;
    cnt(unique(alleBerichteImZeitraum))

     

    Der Trick war also "unique".

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo, mein Vorschlag wäre, direkt die Tabelle Berichte zu filtern und mit unique() mehrfach vorkommende Kontakte nur als einen zu zählen:

     

    let myVon := 'Auswertung Start';
    let myBis := 'Auswertung Ende'
    cnt(unique(select Berichte where Beratungsdatum >= myVon and Beratungsdatum <= myBis).Kontakte)

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Okay, ich sehe, es hat sich erledigt. ;)

    • Handwerkskammer Frankfurt-Rhein-Main
    • Christian_JuraszKischka
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Aber vielen Dank Copytexter!!!