Ich brauche Abfrage, wo ich Daten alle 7 Tage ab Anfang des Monats gruppieren könnte. Das Problem ist, dass ich einige Tage ausschließen muss, vor allem Tage vor/nach Ferien und Feiertagen. In meiner DateDay-Dimension gibt es eine Spalte, die anzeigt, um welchen Tag es sich handelt. Beispiel für Kalender für November:Gruppieren Sie Daten um 7 Tage ohne spezifische Daten
DTD_GID DTD_Date DTD_DayType
20161101 2016-11-01 2 --holiday was on 2016-10-31
20161102 2016-11-02 0
20161103 2016-11-03 0
20161104 2016-11-04 0
20161105 2016-11-05 0
20161106 2016-11-06 0
20161107 2016-11-07 0
20161108 2016-11-08 0
20161109 2016-11-09 0
20161110 2016-11-10 2
20161111 2016-11-11 1--public holiday
20161112 2016-11-12 2
20161113 2016-11-13 0
20161114 2016-11-14 0
20161115 2016-11-15 0
20161116 2016-11-16 0
20161117 2016-11-17 0
20161118 2016-11-18 0
20161119 2016-11-19 0
20161120 2016-11-20 0
20161121 2016-11-21 0
20161122 2016-11-22 0
20161123 2016-11-23 0
20161124 2016-11-24 0
20161125 2016-11-25 0
20161126 2016-11-26 0
20161127 2016-11-27 0
20161128 2016-11-28 0
20161129 2016-11-29 0
20161130 2016-11-30 0
Ich muss Gruppe es wie folgt aus:
1: 2016-11-02 - 2016-11-08 (inclusive)
2: 2016-11-13 - 2016-11-19
3: 2016-11-20 - 2016-11-26
Wenn eine solche Gruppe weniger als 7 Tage haben würde, sollte es nicht durch Abfrage zurückgegeben werden.
Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
EDIT: Ich bin nicht sicher, ob es helfen wird, aber ich schrieb Abfrage, die
SELECT
DTD_DTMGID
,CONVERT(VARCHAR(5), DATEADD(WK, Week, 0), 103) + ' - ' + CONVERT(VARCHAR(5), DATEADD(DD, 6, DATEADD(WK, Week, 0)), 103) AS Week
,Cnt
FROM (
SELECT
DTD_DTMGID
, DATEDIFF(WK, 0, DTD_DATE) AS Week
, COUNT(*) AS Cnt
FROM DIM_DateDay
WHERE DTD_DayType = 0
GROUP BY DTD_DTMGID ,DATEDIFF(WK, 0, DTD_DATE)
) AS X
ORDER BY DTD_DTMGID
und Ergebnis richtige Tage in Wochen zählen schon: Ich erwarte, dass IDs Als Ausgabe:
DTD_DTMGID Week Cnt
201301 31/12 - 06/01 2
201301 07/01 - 13/01 5
201301 14/01 - 20/01 7
201301 21/01 - 27/01 7
201301 28/01 - 03/02 5
201302 28/01 - 03/02 2
EDIT2 von Tagen, die in diesen Gruppen sind. Als ID meine ich die DTD_GID-Spalte, die der Primärschlüssel in meiner DateDay-Dimension ist. Also für Gruppe 1) ich folgende Liste bekommen:
20161102
20161103
20161104
20161105
20161106
20161107
20161108
Geben Sie Ihre Detail erwartet output.Your erwartete Ausgabe ist nicht klar. – Mansoor
@Mansoor Ich habe die erwartete Ausgabe in der letzten Bearbeitung hinzugefügt – Dodzik
Was passiert, wenn ich eine Abfrage zur Verfügung stelle, die Paare von Daten nach Gruppe zurückgibt? –