SQL Server – групповые записи, как и архивы по месяцам

У меня есть таблица с тремя полями.

ID | Fixture | Date ------------------------- 1 | 123456 | 20110515 2 | 123446 | 20110512 3 | 123476 | 20110411 4 | 123486 | 20110310 

…и так далее.

Мне нужно сгруппировать записи по дате и захотеть получить подсчет очков.

Результаты будут отображаться, как в следующем примере. Как я могу получить результаты SQL Query?

 Archives February 2011 (3) January 2011 (6) December 2010 (10) November 2010 (7) October 2010 (5) 

Мне нужна помощь сообщества для решения этой проблемы, любезно помогите мне.

Попробуйте, у вас есть номера в месяц, вы можете обновить его в своем коде или в sql

  select COUNT(id), DATEPART(year, dtCreated) as y, DATEPART(MONTH,dtCreated) as mo from TaxesSteps group by DATEPART(year, dtCreated), DATEPART(MONTH,dtCreated) order by 2 desc, 3 desc 

Как насчет чего-то вроде

 DECLARE @Table TABLE( ID INT, Fixture INT, Date DATETIME ) INSERT INTO @Table SELECT 1,123456,'20110515' INSERT INTO @Table SELECT 2,123446,'20110512' INSERT INTO @Table SELECT 3,123476,'20110411' INSERT INTO @Table SELECT 4,123486,'20110310' ;WITH Vals AS ( SELECT DATENAME(month,Date) + ' ' + CAST(DATEPART(year,Date) AS VARCHAR(4)) DateValue, ID, CONVERT(VARCHAR(6), Date, 112) OrderValue FROM @Table ) SELECT DateValue, COUNT(ID) Cnt FROM Vals GROUP BY DateValue, OrderValue ORDER BY OrderValue 

Я считаю, что этот код будет делать то, что вам нужно:

 SELECT DATENAME(m, [Date]) + ' ' + CAST(YEAR([Date]) AS VARCHAR(4)) AS ArchiveMonth ,COUNT(ID) AS Items FROM Fixture GROUP BY DATENAME(m, [Date]) + ' ' + CAST(YEAR([Date]) AS VARCHAR(4)) 

(Данг это … уже избит)

 Declare @table table (ID bigint identity(1,1), Fixture nvarchar(100), [Date] nvarchar(100)) INSERT INTO @table values ('123456','20110515') INSERT INTO @table values ('123256','20110410') INSERT INTO @table values ('123356','20110511') INSERT INTO @table values ('122456','20110503') --select DATEPART(month,0, (cast([date],datetime) from @table SELECT DATENAME(month, CAST([Date] as datetime))+ ' ' + DATENAME(Year,CAST([Date] as datetime)) + ' (' + CAST(COUNT(Fixture) as varchar(100)) + ') ' from @table group by DATENAME(month, CAST([Date] as datetime))+ ' ' + DATENAME(Year,CAST([Date] as datetime)) 

Я даю вам три варианта : три выхода отображаются

Опция 1

 select convert(char(6), Date, 112) MonthYear, count(*) CountFixtures from Fixture group by convert(char(6), Date, 112) order by convert(char(6), Date, 112) 

Выход №1 – самый простой. На лицевой стороне могут отображаться названия месяца и года:

 MonthYear CountFixtures --------- ------------- 201103 1 201104 1 201105 2 

Вариант №2

 select datename(month, convert(datetime,convert(char(6), Date, 112)+'01')) + ' ' + left(convert(char(6), Date, 112),4) MonthYear, count(*) CountFixtures from Fixture group by convert(char(6), Date, 112) order by convert(char(6), Date, 112) 

Результат №2 – рекомендуется. Подсчет и даты – это отдельные поля

 MonthYear CountFixtures ----------------------------------- ------------- March 2011 1 April 2011 1 May 2011 2 

Вариант № 3

 select datename(month, convert(datetime,convert(char(6), Date, 112)+'01')) + ' ' + left(convert(char(6), Date, 112),4) + ' (' + convert(varchar,count(*)) + ')' FixturesByMonth from Fixture group by convert(char(6), Date, 112) order by convert(char(6), Date, 112) 

Выход №3 – точно так же, как у вас в вопросе, с помощью скобок. Тем не менее, я твердо верю, что форматирование (brackets et al) – это задача переднего плана, а не сторона SQL Server.

 FixturesByMonth ---------------- March 2011 (1) April 2011 (1) May 2011 (2) 
Interesting Posts

Выполнение SQL-обновления с помощью объединения и сопоставления конкретных столбцов

Выполнить пакет SSIS из хранимой процедуры как прокси-пользователя без xp_cmdshell

Как действительно работает SQL Server ReadCommitted Isolation Level?

Cant update table в SQL c #

подсчет дубликатов из двух столбцов в таблице SQL

Как подсчитывать и хранить голоса для веб-сайта?

SQL Server varbinary clustered index lookups медленный для определенных диапазонов

Использование курсора с CTE

sql: нужно изменить ограничение на таблицу переименования?

Задача выбрать конкретное имя столбца с помощью оператора sql

Лицензирование SQL Server 2008 при расщеплении диспетчера отчетов и службы отчетов на разных компьютерах

Запрос не возвращает никаких строк с таким же «%» оператором и левым внешним соединением, если в правой таблице нет строк

Invalid Cast Exception вызывает SqlMembershipProvider GetUser

Выполнить SQL-скрипт из C # и протоколировать ошибки

Каталог серверов Sql / указатель DB –

Давайте будем гением компьютера.