sql >> Databáze >  >> RDS >> Sqlserver

Proč následující dotaz SQL Server vrací data za 12 měsíců a ne data za 14 měsíců

Musíte seskupit podle části měsíce a roku ad.xDate. V roce je pouze dvanáct měsíců a měli byste vidět první dva (14 - 2) měsíce svých výsledků s příliš vysokými součty, protože ve skutečnosti představují kombinaci dvou kalendářních měsíců.

Ve vaší původní verzi to fungovalo, protože každý měsíc má více než 14 dní. Pokud jste se pokusili prodloužit tento starý dotaz na více než 31 dní (nebo 28, 29, 30 na několik měsíců), pak znovu najdete stejný problém.

...
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. V klauzuli FROM nemůžete určit cílovou tabulku pro aktualizaci

  2. mysql:zkontrolujte časové období

  3. com.microsoft.sqlserver.jdbc.SQLServerException:Datový typ varianty není podporován

  4. Vytvoření vlastní TinyURL