mein Problem suchen, ist wie folgt:SQL Server SUM DATEDIFF und NULL, wenn sie bei Aufzeichnungen zwischen zwei Terminen
ich eine Tabelle haben (so genannte Tabelle) mit Spalten: ID, Ereignis, startdate, endDate
startdate geht vom 01.01.1900 bis heute, Enddatum auch. event ist eine beliebige Zeichenfolge und jede ID beginnt und beendet mehrere Ereignisse im Laufe der Zeit (aber nur ein Ereignis zu einem Zeitpunkt_.
Betrachten wir einen Fall, wenn wir Datensätze für Daten zwischen 1989-01-01 und 2000 erhalten möchten Wir wollen die Differenzen zwischen den Daten summieren, um die Gesamtzahl der Wochen zu ermitteln, die jede ID bei irgendei- nem Ereignis verbringt.
Das Problem, das ich habe, ist, dass dort Leute in den Daten sind, die immer noch bei irgendeinem Ereignis sind ist an, so dass ihre enddate null sind.
ich derzeit
SELECT
id,
ISNULL(enddate, 2000-01-01 sum(datediff(weeks, startdate, enddate)) AS wksdoingstuff
WHERE
event IN ('something', 'somethingelse'. 'anotherthing')
AND BETWEEN 1989-01-01 AND 2000-01-01
GROUP BY
id
versuchen
Was mir nach:
Ich mag Reihen von unterschiedlichen IDs und jeder wird eine entsprechende Zahl, wie viele Wochen sie bei den Veranstaltungen von Interesse waren
im Moment meinen Code (nicht ganz das, was ich schrieb dort) gibt mir mehrere Reihen für jede ID, die jede unterschiedliche Periode summiert, die sie bei irgendeinem Ereignis waren.
Der Code, den Sie uns gezeigt haben, nicht einmal in der Nähe ist in der Lage zu sein, zu laufen. Versuchen Sie, ein in sich geschlossenes Beispiel für ** runnable ** -Code zu erstellen (ich würde vorschlagen, eine Tabellenvariable mit ein paar Datenzeilen zu füllen, tatsächlich mit einer FROM-Klausel abzufragen, zu beheben, was auch immer gemangelt wurde) die 'ISNULL'-Zeile, usw.) –
Außerdem müssen Sie uns eine klare Definition geben für welche Ausgabe Sie suchen. "DATEDIFF" zählt * Übergänge *, und wenn wir annehmen, dass Sie "Woche" statt "Wochen" bedeuteten, sollten Sie sich bewusst sein, dass es 1 für zwei Daten, die nur einen Tag auseinander liegen, zurückgibt, wenn der erste Samstag und der zweite ist ist Sonntag. Ist das das Verhalten, das du willst? Müssen * teilweise * Wochen hier berücksichtigt werden? –
ja, partielles verhalten ist gut für die analyse, zusätzlich kann ich immer den tag machen um zu sehen ob die daten sinnvoll sind. Ich bin mir bewusst, dass mein Code nicht läuft, ich bin nicht am Computer, um auf den Server zuzugreifen, und wenn ich bin, habe ich keinen Zugang zum Internet, also muss ich Notizen über die Antwort schreiben und anwenden es. –