sql >> Database >  >> RDS >> Sqlserver

Waarom de volgende SQL Server-query gegevens van 12 maanden retourneert en geen gegevens van 14 maanden?

U moet de onderdelen van ad.xDate zowel op maand als op jaar groeperen. Er zijn slechts twaalf maanden van het jaar en u zou de eerste twee (14 - 2) maanden van uw resultaten moeten zien met totalen die te groot zijn omdat ze eigenlijk een combinatie van twee kalendermaanden vertegenwoordigen.

Het werkte in uw originele versie omdat er meer dan 14 dagen in een maand zijn. Als je geprobeerd hebt om die oude zoekopdracht te verlengen tot na 31 dagen (of 28, 29, 30 voor enkele maanden), dan vind je hetzelfde probleem opnieuw.

...
SELECT
    'playing' As activity,
    min(ad.xDate) As xDate, 
    Isnull(sum(t.TimePerDay), 0) As TimePerDay
FROM AllDates As ad Left Outer Join @test As t On ad.xDate = t.date
GROUP BY Year(ad.xDate), Month(ad.xDate) /* <--- change here */
ORDER BY xDate


  1. Tabel wijzigen in SQL Server met behulp van Alter Statement - SQL Server / T-SQL Tutorial Part 35

  2. Leg MySQL uit, leg de wiskunde van het uitvoeringsplan uit, het verschil tussen twee plannen

  3. Hoe een afbeelding van SQL Server in de afbeeldingsbox te laden?

  4. Group_Concat in Concat werkt niet met NULL-waarden