2017-05-09 12 views
0

Ich erstelle eine Abfrage für die get täglich letzten 7 Tage Benutzer Follower zählen in der SQL-Server. und ich schreibe eine Abfrage, aber nicht die erwartete Ausgabe der Tabelle. gerade jetzt geben Sie nur die Zählung in den letzten 7 Tagen nicht mit dem Datum. Schreibe unten meine Anfrage und sag mir, wo ist mein Fehler.Wie kommt man täglich mit Datum in den letzten 7 Tagen in SQL Server?

Dies ist meine Abfrage =>

DECLARE @my_date DATE = CAST(GETDATE() AS DATE) 
SELECT 
SUM(CASE WHEN CAST(InsertDateTime AS DATE) = DATEADD(DAY, -7, @my_date) THEN 1 ELSE 0 END) AS date1Count, 
SUM(CASE WHEN CAST(InsertDateTime AS DATE) = DATEADD(DAY, -6, @my_date) THEN 1 ELSE 0 END) AS date2Count, 
SUM(CASE WHEN CAST(InsertDateTime AS DATE) = DATEADD(DAY, -5, @my_date) THEN 1 ELSE 0 END) AS date3Count, 
SUM(CASE WHEN CAST(InsertDateTime AS DATE) = DATEADD(DAY, -4, @my_date) THEN 1 ELSE 0 END) AS date4Count, 
SUM(CASE WHEN CAST(InsertDateTime AS DATE) = DATEADD(DAY, -3, @my_date) THEN 1 ELSE 0 END) AS date5Count, 
SUM(CASE WHEN CAST(InsertDateTime AS DATE) = DATEADD(DAY, -2, @my_date) THEN 1 ELSE 0 END) AS date6Count, 
SUM(CASE WHEN CAST(InsertDateTime AS DATE) = DATEADD(DAY, -1, @my_date) THEN 1 ELSE 0 END) AS date7Count 
FROM 
UserFollower 
WHERE 
InsertDateTime BETWEEN DATEADD(DAY, -7, GETDATE()) AND DATEADD(DAY, -1, GETDATE()) 

Stromausgang =>

date1Count | date2Count | date3Count | date4Count | date5Count | date6Count | date7Count 
10   05   20   10   30   50   40 

Erwartete output =>

Expected o/p => 

DateColumn | Count 
09-05-2017 10 
08-05-2017 05 
07-05-2017 20 
06-05-2017 10 
05-05-2017 30 
04-05-2017 50 
03-05-2017 40 

jemand wissen, wie, dass diese Aufgabe in SQL tun können Server lass es mich wissen.

Antwort

1

Sie APPLY wie diese

SELECT CAST(dateadd(day, T.i, getdate()) AS Date) AS DateColumn, uf.TotalCount 
FROM (VALUES (0), (-1), (-2), (-3), (-4), (-5), (-6)) AS T(i) 
OUTER APPLY 
(
    SELECT Count(InsertDateTime) AS TotalCount 
    FROM UserFollower 
    WHERE Datediff(day,UserFollower.InsertDateTime, dateadd(day, T.i, getdate())) = 0 
) uf 
+0

Du bist willkommen @coderwill – TriV

+0

Hallo @Triv kannst du mir bitte mit deiner Lösung helfen? – coderwill

+0

Was möchten Sie tun? – TriV

1

kann nicht GROUPBY Klausel am Ende der Abfrage verwendet werden?

GROUP BY DateColumn 
+0

verwenden könnte, wo können Sie mir bitte sagen? – coderwill

+0

Am Ende Ihrer Anfrage –

+0

nein hier nicht verwendet es ist kein Bedürfnis, also bin ich nicht verwendet – coderwill

Verwandte Themen