Ich habe eine Abfrage, die die Hochzeitsdaten der Mitglieder in der Datenbank zählt.
SELECT
SUM(NumberOfBrides) AS [Wedding Count]
, DATEPART( wk, WeddingDate) AS [Week Number]
, DATEPART( year, WeddingDate) AS [Year]
FROM MemberWeddingDates
GROUP BY DATEPART(year, WeddingDate), DATEPART(wk, WeddingDate)
ORDER BY SUM(NumberOfBrides) DESC
Wie arbeite ich aus, wenn der Beginn und das Ende jeder Woche in der Ergebnismenge dargestellt werden?
SELECT
SUM(NumberOfBrides) AS [Wedding Count]
, DATEPART(wk, WeddingDate) AS [Week Number]
, DATEPART(year, WeddingDate) AS [Year]
, ??? AS WeekStart
, ??? AS WeekEnd
FROM MemberWeddingDates
GROUP BY DATEPART(year, WeddingDate), DATEPART(wk, WeddingDate)
ORDER BY SUM(NumberOfBrides) DESC
sql
sql-server
date
sql-server-2005
week-number
Digiguru
quelle
quelle
DATEFIRST
auf etwas anderes als 7 dies unterbricht.Hier ist eine
DATEFIRST
agnostische Lösung:quelle
Sie können dies auch verwenden:
quelle
Erweiterung der Antwort von @ Tomalak . Die Formel funktioniert für andere Tage als Sonntag und Montag, aber Sie müssen unterschiedliche Werte für die 5 verwenden. Ein Weg, um zu dem Wert zu gelangen, den Sie benötigen, ist
Hier ist ein Link zum Dokument: https://msdn.microsoft.com/en-us/library/ms181598.aspx
Und hier ist ein Tisch, der es für Sie auslegt.
Aber Sie müssen sich nicht an diese Tabelle und nur an die Formel erinnern, und tatsächlich könnten Sie auch eine etwas andere verwenden. Das Hauptbedürfnis besteht darin, einen Wert zu verwenden, der den Rest auf die richtige Anzahl von Tagen bringt.
Hier ist ein Arbeitsbeispiel:
Diese Methode ist unabhängig von der
DATEFIRST
Einstellung, die ich brauchte, um eine Datumsdimension mit mehrwöchigen Methoden zu erstellen.quelle
Hier ist eine andere Version. Wenn in Ihrem Szenario der Samstag der erste Wochentag und der Freitag der letzte Wochentag sein muss, wird dies mit dem folgenden Code behandelt:
quelle
Die folgende Abfrage enthält Daten zwischen Beginn und Ende der aktuellen Woche von Sonntag bis Samstag
quelle
Lassen Sie uns das Problem in zwei Teile aufteilen:
1) Bestimmen Sie den Wochentag
Das
DATEPART(dw, ...)
gibt eine Zahl von 1 ... 7 relativ zurDATEFIRST
Einstellung ( docs ) zurück. Die folgende Tabelle fasst die möglichen Werte zusammen:Die letzte Spalte enthält den idealen Wochentagswert für die Wochen von Montag bis Sonntag *. Wenn wir uns nur das Diagramm ansehen, erhalten wir die folgende Gleichung:
2) Berechnen Sie den Montag und Sonntag für ein bestimmtes Datum
Dies ist dank des Wochentagswerts trivial. Hier ist ein Beispiel:
Ausgabe:
* Für Wochen von Sonntag bis Samstag müssen Sie die Gleichung nur ein wenig anpassen, z. B. irgendwo 1 hinzufügen.
quelle
Wenn der Sonntag als Wochenstarttag betrachtet wird, ist hier der Code
quelle
Ich stoße gerade auf einen ähnlichen Fall mit diesem, aber die Lösung hier scheint mir nicht zu helfen. Also versuche ich es selbst herauszufinden. Ich arbeite nur das Startdatum der Woche aus, das Enddatum der Woche sollte von ähnlicher Logik sein.
quelle
Die am häufigsten gewählte Antwort funktioniert gut, mit Ausnahme der ersten Woche und der letzten Woche eines Jahres. Wenn der Wert von WeddingDate beispielsweise "2016-01-01" ist, lautet das Ergebnis 2015-12-27 und 2016-01-02 , aber die richtige Antwort lautet 2016-01-01 und 2016-01-02 .
Versuche dies:
Das Ergebnis sieht aus wie:
Es funktioniert für alle Wochen, 1. oder andere.
quelle
Das kam nicht von mir, aber es hat die Arbeit erledigt:
Ich habe es hier gefunden .
quelle
Start- und Enddatum der Woche ab Datum für Power BI Dax Formula
quelle
Das ist meine Lösung
quelle
Startdatum und Enddatum nach benutzerdefiniertem Datum abrufen
quelle
Ich habe einen anderen Weg, es ist Tag Start und Tag Ende der Woche Aktuell ausgewählt:
quelle
Ein anderer Weg, es zu tun:
Erläuterung:
select datediff(week, 0, @wedding_date) as week_number
dateadd(week, @week_number, @end_weekday)
: fügt die angegebene Anzahl von Wochen und die angegebene Anzahl von Tagen zum ursprünglichen Kalenderdatum ' 1900-01-01 ' hinzuquelle
Ich bin mir nicht sicher, wie nützlich dies ist, aber ich habe hier nach einer Lösung für Netezza SQL gesucht und konnte keine Lösung für den Stapelüberlauf finden.
Für IBM Netezza würden Sie etwas verwenden (für Wochenbeginn Mo, Wochenendsonne) wie:
Wählen Sie next_day (WeddingDate, 'SUN') -6 als WeekStart.
next_day (WeddingDate, 'SUN') als WeekEnd
quelle
Für Zugriffsabfragen können Sie das folgende Format als Feld verwenden
direkte Berechnung erlaubt ..
quelle