Fuldaer_Bub Geschrieben 4. März 2004 Teilen Geschrieben 4. März 2004 Hallo.. habe über die Suchfunktion keinen passenden Thread gefunden. Und zwar ist mein Problem dieses, das ich eine SQL-Abfrage über den jeweils aktuellen Monat machen möchte. Meine Abfrage sieht derzeit so aus : SELECT HOT_Ticket.Erfassungsdatum, HOT_Ticket.AnfrageVon, HOT_Ticket.NaviGeraete, HOT_Ticket.GrundDerAnfrage, HOT_Ticket.Produktbereich FROM HOT_Ticket HOT_Ticket WHERE (HOT_Ticket.Erfassungsdatum>={ts '2004-02-01 00:00:00.000'} And HOT_Ticket.Erfassungsdatum<={ts '2004-02-29 00:00:00.000'}) AND (HOT_Ticket.ED_LandTelfKu='Deutschland') ORDER BY HOT_Ticket.Erfassungsdatum Die Tabellen liegen übrigens in einer Oracle-Datenbank. Ich habe es auch schon mit WHERE (HOT_Ticket.Erfassungsdatum = month(Now()) probiert. Geht aber nicht. Wer weiss Rat? DANKE ! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dgr243 Geschrieben 4. März 2004 Teilen Geschrieben 4. März 2004 Das aktuelle Datum in Oracle bekommste mit select sysdate from dual; Nun kannste noch das zurückgelieferte Datum so beschneiden, daß nur der Monat über bleibt (mir fällt nur grad der Befehl net ein ) und dann die gesamte Abfrage als Unterabfrage in der Where Klausel verwenden select * from Aufträge where monat = (select sysdate from dual); In der Unterabfrage fehlt natürlich das beschneiden auf den reinen Monat .... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brunswick Geschrieben 4. März 2004 Teilen Geschrieben 4. März 2004 Kenne das Format deines Vergleichswerts nicht, aber angenommen es wäre char, dann müsstest du deine variable im where vergleichen mit dem ergebnis aus: select to_char(sysdate, 'MM') from dual alternativ geht auch statt 'MM' (Monat als zweistellige Zahl): 'MON' (dreistelliger Monatsname z.B. FEB für Februar) 'MONTH' (MONATSNAME, -> 'Month' ergibt Monatsname....) sollte funktionieren, kann derzeit leider nicht auf unsere DB hier connecten ums selber vorabzutesten, da die neue Version aufgespielt wird Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 4. März 2004 Autor Teilen Geschrieben 4. März 2004 Danke schonmal. Werde das mal ausprobieren. Aber das Problem ist auch,das ich nur über einen ODBC-Treiber auf die Datenbank zugreife. Die SQL-Stats. setze ich in MS Query ab. Funkt. das dann auch mit Euren beschriebenen Stats. ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 4. März 2004 Autor Teilen Geschrieben 4. März 2004 Habe immer noch kein Erfolgsergebnis zu verzeichnen. Wie müsste mein Stat. genau aussehen? Komme nicht klar mit " dual " Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Brunswick Geschrieben 4. März 2004 Teilen Geschrieben 4. März 2004 dual ist eine dummytabelle unter oracle, die jeder user nutzen kann. sie besteht aus einer dummyspalte und einer zeile mit dem wert x (x is hier halt sysdate). WHERE (HOT_Ticket.Erfassungsdatum 'MM' = select sysdate 'MM' from dual) vorausgesetzt, deine spalte erfassungsdatum ist im date format. du musst über die formatangabe des datums dein erfassungsdatum auf moat einschränken und das ganze mit nem ebenfalls auf monat eingeschränkten subselect mit sysdate vergleichen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 @Brunswick : Danke schonmal für Deine Antwort. Ein Subselect ist eine Unterabfrage richtig? Wenn ich mich recht erinnere, muss ich das irgendwie mit Klammern einbauen. Ohje, bin nicht sonderlich fit in SQL. *schwitz* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 Original geschrieben von dgr243 select * from Aufträge where monat = (select sysdate from dual); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 @kills : das hilft mir jetzt aber nicht weiter... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 Original geschrieben von Fuldaer_Bub @Brunswick : Danke schonmal für Deine Antwort. Ein Subselect ist eine Unterabfrage richtig? Wenn ich mich recht erinnere, muss ich das irgendwie mit Klammern einbauen. Ohje, bin nicht sonderlich fit in SQL. *schwitz* hier steht du weisst nicht was ein subselect ist, geschweige denn wie man ihn anwendet. Das oben war ein Beispiel wies geht. notfalls poste deine db struktur und dein sql. damit kann man dann wenigstens arbeiten Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 @kills : Danke. Ich werde es gleich mal ausprobieren. Aber was nen subselect ist, weiss ich schon. Nur bekomme ich es gerade nicht auf den Schirm wie ich es in meinem jetzigen Fall anwenden soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 Original geschrieben von kills notfalls poste deine db struktur und dein sql. damit kann man dann wenigstens arbeiten Mein SQL was ich benutze ist MS Query ( in Verbinbung mit Excel) die DB ist Oracle. Leider habe ich kein Oracle-Client und weiss auch nicht in welchem Format die Felder dort liegen.... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dgr243 Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 Original geschrieben von Fuldaer_Bub @kills : Danke. Ich werde es gleich mal ausprobieren. Aber was nen subselect ist, weiss ich schon. Nur bekomme ich es gerade nicht auf den Schirm wie ich es in meinem jetzigen Fall anwenden soll. Oben schon gepostet und nun erweitert: select * from tabelle where to_char(monat, month) = (select to_char(sysdate, month) from dual); sollte auch mit MS Query klappen. Die mit den beiden Typecasts "to_char" stellste sicher, dass beide male das datum als char im reinen monatsformat vorliegt, damit du auch vergleichen kannst. Die unterabfrage rechts vom gleichzeitszeichen in der where klausel selektiert das aktuelle Systemdatum und extrahiert daraus den Monat. das sternchen, sowie tabelle musst du natürlich entsprechend deiner tabellenstruktur anpassen ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 Aber muss ich nicht noch angeben, das sich to_char auf Erfassungsdatum.HOT_Ticket bezieht? Auch komme ich nicht mit : "where to_char(monat, month)" klar. Muss ich das nicht irgendwie mit "month (now())" machen, damit ich immer die Abfrage auf den aktuellen Monat mache? Ohje, Freitag ist kein Denk-Tag . :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dgr243 Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 Grad gesehen, dass du ja oben deine Abfrage schon gepostet hattest .... : Sollte dann wie folgt funzen: SELECT HOT_Ticket.Erfassungsdatum, HOT_Ticket.AnfrageVon, HOT_Ticket.NaviGeraete, HOT_Ticket.GrundDerAnfrage, HOT_Ticket.Produktbereich FROM HOT_Ticket HOT_Ticket WHERE to_char(HOT_Ticket.Erfassungsdatum, 'month') = (select to_char(sysdate, 'month') from dual) And (HOT_Ticket.ED_LandTelfKu='Deutschland') ORDER BY HOT_Ticket.Erfassungsdatum Kann allerdings sein das es statt 'month' jeweils "month" heissen muss .. hab grad keinen zugriff auf ne oracle db .. deswegn bin ich ein bisserl unsicher ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 @dgr243 : Das funkt. leider nicht. Query meldet mir : "Eine SQL-Abfrage kann nicht grafisch dargestellt werden. Möchten sie trotzdem fortfahren ?" und dann : "Expected lexical element not found = , <>, <, <=, > or => " :confused: :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dgr243 Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 Original geschrieben von Fuldaer_Bub @dgr243 : Das funkt. leider nicht. Query meldet mir : "Eine SQL-Abfrage kann nicht grafisch dargestellt werden. Möchten sie trotzdem fortfahren ?" und dann : "Expected lexical element not found = , <>, <, <=, > or => " :confused: :confused: Meldet er dir auch ne Stelle an der das gemeldet wird ? Also zeile x zeichen y oder sowas ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 Ne, leider nicht. So schlau ist MS Query anscheinend nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dgr243 Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 Original geschrieben von Fuldaer_Bub Ne, leider nicht. So schlau ist MS Query anscheinend nicht. Hmm ich werd mir dat zu Hause ma ansehen.. Da hab ich wenigstens ne Oracle DB zum Testen Meld mich nochmal (und bis dahin sag ich mal wem Bescheid, er soll hier ma rein sehen.... der is ja schliesslich Oracle DB Entwickler....) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 Danke. Vielleicht liegt es daran das das Format des Feldes ein anderes ist. "...WHERE (HOT_Ticket.Erfassungsdatum>={ts '2004-02-01 00:00:00.000'}..." ts bedeutet doch vermutlich timestamp. Lässt sich daraus nicht irgendwie der monat rausziehen, also jeweils der aktuelle? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DerMatze Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 So, der versprochene Oracle DB Entwickler meldet sich aus seinem Urlaub So, also ... erstmal verstehe ich eine Kleinigkeit nicht ... du arbeitest nur auf einer Tabelle, warum dann jedesmal dieses HOT_Ticket ? Kannst du dich mit SQL*Plus auf die DB direkt connecten ? Ist HOT_Ticket.Erfassungsdatum in der DB wirklich ein DATE ? Ich wuerde dann erstmal wieder den angesprochenen Cast verwenden ... to_date (nein, nicht verlesen), denn wir haben jeweils ein Datum, dass auf verschiedene Art und Weise gespeichert ist. Also bringen wir beide Daten aufs gleiche Format, naemlich Monat to_date(HOT_Ticket.Erfassungsdatum, "MM") Soweit so gut, gelle ? Mit MS Query kenne ich mich kaum aus, daher sind die Tips nur zu gebracuhen, wenn MS sich da an das SQL von Oracle haelt. hth Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 5. März 2004 Autor Teilen Geschrieben 5. März 2004 Hallo Matze... Das ich immer HOT_Ticket davor setze ist sicherlich nicht notwendig, macht MS Query aber auch immer automatisch mit hin. Ob "Erfassungsdatum" wirklich Date-Format hat, weiß ich nicht, konnte mir hier auch noch keiner beantworten. Ich vermute aber mal das Datum ist als Timestamp abgelegt ( ist da ein Unterschied??) Wenn ich WHERE to_date(HOT_Ticket.Erfassungsdatum, "MM") verwende, würde das dann so aussehen ? SELECT HOT_Ticket.Erfassungsdatum, HOT_Ticket.AnfrageVon, HOT_Ticket.NaviGeraete, HOT_Ticket.GrundDerAnfrage, HOT_Ticket.Produktbereich FROM HOT_Ticket HOT_Ticket WHERE to_date(HOT_Ticket.Erfassungsdatum, "MM") = (select to_date(sysdate, "MM") from dual) And (HOT_Ticket.ED_LandTelfKu='Deutschland') ORDER BY HOT_Ticket.Erfassungsdatum Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dgr243 Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 Wow hat der Matze das tatsächlich gemacht Original geschrieben von Fuldaer_Bub SELECT HOT_Ticket.Erfassungsdatum, HOT_Ticket.AnfrageVon, HOT_Ticket.NaviGeraete, HOT_Ticket.GrundDerAnfrage, HOT_Ticket.Produktbereich FROM HOT_Ticket [b]HOT_Ticket[/b] WHERE to_date(HOT_Ticket.Erfassungsdatum, "MM") = (select to_date(sysdate, "MM") from dual) And (HOT_Ticket.ED_LandTelfKu='Deutschland') ORDER BY HOT_Ticket.Erfassungsdatum Also ich finde das statement sieht gut aus, bis auf den Teil den ich fett gedruckt hab oben. da is doch was doppelt, oder nicht ? Funzt die Abfrage denn ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
just_me Geschrieben 5. März 2004 Teilen Geschrieben 5. März 2004 ... wenn ich da mal was in die Expertenrunde streuen darf: MS Query ist eine abgespeckte, nichtsdestotrotz aber ODBC-konnektive SQL-Variante für den "Office-Heimgebrauch" oder für Freaks. Daraus ergibt sich folgende Basis: a) Essentiell werden alle Daten in ODBC-konforme Formate gecastet. (Das macht uns hier vieles leichter, wie du gleich erkennen wirst.) MS Query KANN kein einziges Wort SQL*Plus (oder sonstige Derivate) sprechen. (Daher ist jeder Versuch, sich von dieser Seite zu nähern, zum Scheitern verurteilt. Es entspräche dem Versuch, sein eigenes Auto für einen Porsche zu halten, nur weil man beim Einsteigen durch das Beifahrerfenster einen Porsche sehen kann.) @Fuldaer_Bub Mein Tipp: Leg das Ding weit, weit ... seeeeeehr weit ... weg. Microsoft hat daran seit Jahren nichts mehr gemacht, und deshalb ist es auf einem Stand, der bestenfalls archaisch zu nennen ist. Folgender Weg: Den Weg zum MS Query - Editor kennst du ja bereits, wie du oben geschildert hast. Dort muss es einen Menüpunkt oder Schalter "SQL-Direkt" oder so geben. (Ich habe das Bild nur sehr verschwommen vor Augen ... sorry.) Daraufhin öffnet sich dann ein neues Fenster, in das du deine Abfrage direkt eingeben können solltest. Gib dann einfach folgendes ein: SELECT Erfassungsdatum, AnfrageVon, NaviGeraete, GrundDerAnfrage, Produktbereich FROM HOT_Ticket WHERE DatePart(month, Erfassungsdatum) = DatePart(month, getdate())Damit werden alle Daten zurückgegeben, deren Erfassungsdatum im aktuellen Monat liegt. (Hinweis: Wenn Daten mehrerer Jahre vorliegen, werden diese unberücksichtigt des Jahres ausgegeben. Ein Abgleich des Jahres wäre also opportun, ist aber hier nicht gefordert.) ... und jetzt wieder zurück zum Thema, lasst euch von mir bitte nicht stören ... Entschuldigung für die Unterbrechung der Podiumsdiskussion. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Fuldaer_Bub Geschrieben 11. März 2004 Autor Teilen Geschrieben 11. März 2004 Hallo nochmal. Also mein Problem ist immer noch nicht gelöst. Würde es funktionieren wenn ich über Access eine SQL-Abfrage auf die Datenbank mache oder klappt das so auch nicht? Bin echt ratlos. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.