sql >> Database teknologi >  >> RDS >> Sqlserver

Hvorfor den følgende SQL Server-forespørgsel returnerer 12 måneders data og ikke 14 måneders data

Du skal gruppere efter både måned og år dele af ad.xDate. Der er kun tolv måneder af året, og du bør se de tidligste to (14 - 2) måneder af dine resultater med totaler, der er for store, fordi de faktisk repræsenterer en kombination af to kalendermåneder.

Det fungerede i din originale version, fordi der er mere end 14 dage i en måned. Hvis du forsøgte at forlænge den gamle forespørgsel ud over 31 dage (eller 28, 29, 30 i nogle måneder), så finder du det samme problem igen.

...
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. Hvad er den mest ligetil måde at udfylde tomme datoer i SQL-resultater (i enten mysql- eller perl-enden)?

  2. Kolonnenavnet Fornavn angivet i PIVOT-operatoren er i konflikt med det eksisterende kolonnenavn i PIVOT-argumentet

  3. Hvordan gør man mySQL-database på min lokale tilgængelig fra forskellige maskiner?

  4. Uddrag året fra en dato i PostgreSQL