none
Bitte um Hilfe - SQL Statement RRS feed

  • Frage

  • Hallo,

    ich bin in sachen SQL leider noch nicht so erfahren wie ich gerne hätte, daher entschuldigt bitte die vielleicht blöde Frage:

    Es geht um eine Kundentabelle. Ein SQL Script (für SQL Server 2008) soll folgendes ausliefern: Anzahl der Kunden pro Standort, welche in einem gewissen Zeitraum erstellt wurden.

    Das ist mein Script

    select xaort, count(xaort), erstellt
    from kunde
    where (erstellt >= CONVERT(date, GETDATE()-7) and erstellt < CONVERT(date, GETDATE()))
    group by xaort, erstellt

    xaort = Standort
    erstellt = Erstelldatum des Kunden (Format yyy-mm-dd hh:mm:ss z.B. 2012-11-15 13:36:52)
    Hier werden alle Kunden mit Standort angezeigt, welche letzte Woche erstellt wurden (beispiel kw 47)

    Ein Kollege würde das Statement allerdings so ausführen:

    select xaort, count(xaort) Anzahl, datepart(isowk,dateadd(dd,0,erstellt)) kw from kunde where erstellt >= convert(datetime,'19.11.2012',104) and erstellt <= convert(datetime,'25.11.2012',104) group by xaort, datepart(isowk,dateadd(dd,0,erstellt))
    order by xaort

    Reichen diese Informationen um mir sagen zu können, wieso diese Scripte mir unterschiedliche Mengen ausgeben?

    In beiden Scripten ist doch die Bedingung Erstelldatum = die 7 Tage der Kw 47?

    Vielen Dank an diejenigen, welche Licht in mein Dunkel bringen können

    Mittwoch, 28. November 2012 12:43

Antworten

  • Egal ist die Lage von hinten ....

    Wenn Du das erste Script genau jetzt ausführst, wird der Zeitraum >= 2012-11-21 14:18:47.043 und < 2012-11-28 14:18:47.043 ausgewertet.

    Das zweite Statement werte fix den Zeitbereich von 2012-11-19 00:00:00.000 bis <= 2012-11-25 00:00:00.000 aus; der letzte neue Kunde vom 2012-11-25 23:51:39 ist dort also auch nicht enthalten.


    Olaf Helper

    Blog Xing


    Mittwoch, 28. November 2012 13:20

Alle Antworten

  • In beiden Scripten ist doch die Bedingung Erstelldatum = die 7 Tage der Kw 47?

    Hallo,

    Nein; GetDate() liefert nicht nur das aktuelle Datum, sondern auch die aktuelle Uhrzeit und so wird auch auf die Uhrzeit mitgefiltert. D.h. auch, dass das Ergebnis jedesmal variiert wenn Du es ausführst. Bei der zweiten Abfrage ist hingegen ein festes Datum ohne Uhrzeit angegeben, das wird auch immer das gleiche Ergebnis liefern.


    Olaf Helper

    Blog Xing

    Mittwoch, 28. November 2012 12:50
  • Danke Olaf für deinen Hinweis, aber ist das nicht "egal"?
    Bei meinem Script wurde der erste Kunde 2012-11-19 01:00:44 und der letzte 2012-11-25 23:51:39 erstellt. Scheint also zu stimmen? Oder übersehe ich etwas?

    Mittwoch, 28. November 2012 13:05
  • Egal ist die Lage von hinten ....

    Wenn Du das erste Script genau jetzt ausführst, wird der Zeitraum >= 2012-11-21 14:18:47.043 und < 2012-11-28 14:18:47.043 ausgewertet.

    Das zweite Statement werte fix den Zeitbereich von 2012-11-19 00:00:00.000 bis <= 2012-11-25 00:00:00.000 aus; der letzte neue Kunde vom 2012-11-25 23:51:39 ist dort also auch nicht enthalten.


    Olaf Helper

    Blog Xing


    Mittwoch, 28. November 2012 13:20
  • Jawohl und das wird wohl die Differenz erzeugt haben, denn die Scripte wurden zu unterschiedlichen Uhrzeiten ausgeführt.

    Danke für deine Hilfe :)

    Freitag, 30. November 2012 12:05