Можем ли мы использовать группу по и где условие с тем же именем поля - PullRequest
8 голосов
/ 16 августа 2011

У меня есть требование, например, вытащить все записи в диапазоне дат, выбранном пользователем, выбрав всех сотрудников, начавших работу с 15 января 2011 года по 20 августа 2011 года, и сгруппировать по дате.

Как мне написать SQL-запрос для этого:

  SELECT *
    FROM employees 
   WHERE startdate >= '15-jan-2011' 
     AND startdate <= '20-aug-2011'
GROUP BY startdate

Ответы [ 2 ]

16 голосов
/ 16 августа 2011

Абсолютно.Это приведет к фильтрации записей по вашему диапазону дат, а затем сгруппировать их по каждому дню, в котором есть данные.

Следует отметить, что вы сможете выбрать только начальную дату, а затем все агрегируемые значения.расчет.В противном случае он должен работать идеально.

Например, этот запрос даст вам количество сотрудников для каждой начальной даты:

SELECT startdate, count(*)
FROM employees 
WHERE startdate >= '15-jan-2011' 
      AND startdate <= '20-aug-2011'
GROUP BY startdate
2 голосов
/ 16 августа 2011

Можно, но предложение "GROUP BY" используется для группировки наборов строк, поэтому оно не имеет смысла для вашего вопроса (или всего, что связано с "SELECT *").

Чтобы ответить на ваш вопрос, хотя:

SELECT DATEADD(dd, 0, DATEDIFF(dd,0,StartDate)) AS 'StartDate', <other fields>
FROM   Employees
WHERE  StartDate BETWEEN '15-Jan-2011' AND '20-Jan-2011'
ORDER BY StartDate

Примечание: снятие времени с даты пришло с здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...