Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите с запросом  [new]
sam3000
Member

Откуда:
Сообщений: 5
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Express Edition on Windows NT 5.1 (Build 2600: Service Pack 2)

У меня есть запрос:
SELECT DATENAME(year,date) as year, DATEPART(month,date) as month, count(*) as uniq FROM dbo.counter
WHERE DATENAME(year,date)='2009' GROUP BY DATENAME(year,date), DATEPART(month,date)
ORDER BY DATENAME(year,date), DATEPART(month,date) DESC;
Мне нужно еще выбрать полную дату, а при попытке выполнить:
SELECT date, count(*) as uniq FROM dbo.counter
WHERE DATENAME(year,date)='2009' GROUP BY DATENAME(year,date), DATEPART(month,date)
ORDER BY DATENAME(year,date), DATEPART(month,date) DESC
Ругается:
Сообщение 8120, уровень 16, состояние 1, строка 1
Столбец "dbo.counter.date" недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.
Как мне запрос поправить?
24 сен 09, 00:53    [7700737]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
Denis Reznik
Member

Откуда: Киев
Сообщений: 156
sam3000,

вы делаете группировку не по самомоу полю date, поэтому для каждой строки вашей группировки, вы будете получать несколько значений date, что, собствено, и ненравится сиквелу. Для того, чтоб он не ругался, вам нужно применить к полю date агрегатную ф-ю. Например выбирать MAX(date).
24 сен 09, 01:07    [7700745]     Ответить | Цитировать Сообщить модератору
 Re: помогите с запросом  [new]
sam3000
Member

Откуда:
Сообщений: 5
Denis Reznik,
Пасиба, теперь буду знать как лечить.
24 сен 09, 01:24    [7700758]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить