SQL Group по годам - PullRequest
       1

SQL Group по годам

12 голосов
/ 11 мая 2011

Это мой запрос.

select CONVERT(varchar, cast(date as datetime), 3)
from shoptransfer 
group by year (date)

Я хочу сгруппировать по части года столбца даты (varchar), однако я получаю следующую ошибку:

СтолбецПараметр shoptransfer.Date недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

Как группировать по части года столбца даты?

Ответы [ 5 ]

45 голосов
/ 11 мая 2011

Как насчет:

select datepart(yyyy, [date]) as [year]
from shoptransfer 
group by datepart(yyyy, [date])

Или:

select count(*) as qty, datepart(yyyy, [date]) as [year]
from shoptransfer 
group by datepart(yyyy, [date])
order by [year]

Это основано на команде OP: "Я хочу сгруппировать по году часть столбца даты (varchar)«

1 голос
/ 11 мая 2011

Вы должны добавить столбец shoptransfer.Date в предложение group by.

select CONVERT(varchar,cast(date as datetime),3)
from shoptransfer 
where 
SUBSTRING(productcode, 5, 3) like '%' 
group by CONVERT(varchar,cast(date as datetime),3)
0 голосов
/ 12 мая 2011
group by
substring(CONVERT(varchar,comuln1,101),1,4)

год 2004 2005 2006

0 голосов
/ 11 мая 2011

Если вы хотите выбрать дату и год, вам не следует использовать предложение GROUP BY, поскольку оно объединяет все строки с одинаковыми годами в одну строку. Если вы хотите, чтобы все даты совпадали по годам, вы можете использовать ЗАКАЗАТЬ:

SELECT DATEPART('yyyy',date) AS Year,date
FROM shoptransfer 

OR

SELECT DATEPART('yyyy',date) AS Year,date
FROM shoptransfer
ORDER BY DATEPART('yyyy',date) desc
0 голосов
/ 11 мая 2011

Я не знаю, как обстоят дела с T-SQL, но в целом в SQL то, что находится в предложении group by, должно точно соответствовать каждому столбцу неагрегированной функции в предложении select. Попробуйте

select CONVERT(varchar,cast(date as datetime),3)
from shoptransfer 
where 
SUBSTRING(productcode, 5, 3) like '%'  group by CONVERT(varchar,cast(date as datetime),3)

также, where SUBSTRING(productcode, 5, 3) like '%' не сильно отфильтровывает - возможно, удалите его.

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