Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Abfrage SQL in...Between

Begonnen von herb54, August 06, 2016, 15:56:51

⏪ vorheriges - nächstes ⏩

herb54

Hallo, ich möchte in verschiedenen Datumsfeldern einer Tabelle die Quartale und die dazugehörigen Beträge rausfiltern.
Die Tabelle enthält neben den Namensfeldern (Nachname, Vorname) Datumsfelder (Datum1 bis Datum11) und Betragsfelder (Betrag1 bis Betrag11).
Dazu habe ich zum Test für Datumsfeld Datum1 und Datum2 eine SQL Abfrage in folgender Weise erstellt:

SELECT DISTINCT Test.ID, Test.Nachname, Test.Vorname, Test.Datum1, Test.Bezahlt1, Test.Datum2, Test.Bezahlt2
FROM Test
WHERE (((Test.ID) In (Select Test.ID From Test Where Datum1 BETWEEN #04/01/2016# AND #06/30/2016#
OR  Datum2 BETWEEN #04/01/2016# AND #06/30/2016#)));


Ich wollte in diesem Fall das zweite Quartal (1.4.2016 bis 30.6.2016) herausfiltern. Das hat eigentlich auch gut geklappt. Leider
enthalten die Einträge von Datum2 auch Werte des 3.Quartals:

Also z.B.
Datum1:         Betrag1:       Datum2:      Betrag2:
27.06.2016     450€            19.7.2016     300€

Wie kriege ich die anderen Datumsfelder so gefiltert, dass nur das gewünschte Quartal angezeigt wird?

Gruß
Herbert


MzKlMu

#1
Hallo,
aus einem Datum lässt sich mit DatePart direkt das Quartal ableiten und dann kannst Du direkt nach dem Quartal (1-4) zusammen mit dem Jahr filtern.
Etaw so:
.. WHERE DatePart("q",[datum1])=2 AND Year([datum1])=2016 OR DatePart("q",[datum2])=2 AND Year([datum2])=2016 OR DatePart("q",[datum3])=2 AND Year([datum3])=2016
Aber, es werden die Datensätze angezeigt die in irgendeinem Feld das 2 Quartal haben. Daher ist Dein Vorhaben mit dem gegenwärtigen Aufbau der Tabelle nicht möglich. Siehe nachfolgende Anmerkungen zum DB Modell.

ZitatDatumsfelder (Datum1 bis Datum11) und Betragsfelder (Betrag1 bis Betrag11).
Hier ist eine extra Tabelle erforderlich mit einem Fremdschlüssel zur Person.
In diese Tabelle kommen dann je Person keine 2x11 Felder sondern nur 2 Felder (Datum und Betrag) und die Beträge werden als 11 Datensätze erfasst.

Gefiltert wird dann in einem Feld mit dem Datum.

Ich halte die Tabelle so wie diese jetzt vorliegt für eine Datenbank für unbrauchbar. Das solltest Du umbauen.

Was sind denn das für 11 Beträge und warum 11 ?
Gruß Klaus

herb54

Hallo Klaus, vielen Dank für deine Antwort! So ähnlich hatte ich es mir vorgestellt. Nach meiner Version werden nur im Datumsfeld 1 die Datensätze richtig gefiltert. Die DatePart- Angabe kenn ich noch nicht. Vielen Dank für diese Info!
Viele Grüße und vielen Dank!
Herbert