Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо следната заявка на SQL Server връща данни за 12 месеца, а не за 14 месеца

Трябва да групирате по части от месец и година на ad.xDate. Има само дванадесет месеца в годината и трябва да виждате най-ранните два (14 - 2) месеца от вашите резултати с общи суми, които са твърде големи, защото те всъщност представляват комбинация от два календарни месеца.

Работи в оригиналната ви версия, защото всеки месец има повече от 14 дни. Ако сте се опитали да удължите тази стара заявка след 31 дни (или 28, 29, 30 за няколко месеца), ще откриете същия проблем отново.

...
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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Сравняване на типове данни за изображения в SQL

  2. Защо SQL Server автоматично игнорира празното пространство в края?

  3. ms sql заявка за преброяване на поява на думи в текстова колона

  4. Най-добрите форуми за производителност на SQL Server за помощ по най-трудните въпроси

  5. SQL Server Collection Inventory Script -2