Фильтр по дате с группой по условию - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть группа таблиц по идентификатору, и я хочу фильтровать по дате.

StudentTable
DateTime StudentId Grade

SELECT DateTime, StudentId, AVG(Grade)
FROM StudentTable
WHERE CONVERT(DATE, DateTime, 102) BETWEEN CONVERT(DATE, '11-1-2018', 102) 
AND CONVERT(DATE, '12-02-2018', 102)
GROUP BY StudentId

Но это вызывает ошибку. Столбец DateTime недопустим в списке выбора, поскольку он не содержится ни в статистической функцииили предложение GROUP BY.Что я должен делать?Спасибо заранее

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Это решает мою проблему.Но если у вас есть лучшее решение, пожалуйста, дайте мне знать.

SELECT StudentId, AVG (Grade) FROM 
    (SELECT * FROM StudentTable
    WHERE CONVERT(DATE, DateTime, 102) BETWEEN CONVERT(DATE, '11-1-2018', 102) 
    AND CONVERT(DATE, '12-02-2018', 102)
) MainT
GROUP BY MainT.StudentId
0 голосов
/ 03 декабря 2018

Просто используйте предложение МЕЖДУ вместо ручного преобразования строки в дату.

SELECT DateTime, StudentId, AVG(Grade)
FROM StudentTable
WHERE DateTime BETWEEN '11-1-2018' AND '12-02-2018'
GROUP BY StudentId;

Получено из W3Schools .

...