SQl: группа по месяцам и годам - PullRequest
0 голосов
/ 17 июля 2010

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

SELECT * FROM(
    SELECT WP_BlogEntries.BlogEntryID, WP_BlogEntries.AddedDate,
        WP_BlogEntries.AddedBy, WP_BlogEntries.BlogID, 
        WP_BlogEntries.Title, WP_BlogEntries.Description, WP_BlogEntries.Body,
        WP_BlogEntries.ReleaseDate, WP_BlogEntries.ExpireDate,
        WP_BlogEntries.Approved, WP_BlogEntries.Listed,
        WP_BlogEntries.CommentsEnabled, WP_BlogEntries.OnlyForMembers,
        WP_BlogEntries.ViewCount, WP_BlogEntries.Votes, 
        WP_BlogEntries.TotalRating
    FROM WP_BlogEntries
    WHERE WP_BlogEntries.ReleaseDate < GETDATE()
        AND WP_BlogEntries.ExpireDate > GETDATE()
        AND Approved = 1
        AND Listed = 1
        AND WP_BlogEntries.BlogID = @BlogID) MonthEntries 
    GROUP BY YEAR(ReleaseDate), MONTH(ReleaseDate)

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Было бы полезно узнать сообщение об ошибке.

Вы не можете сделать SELECT * FROM, если указать GROUP BY.

Единственные допустимые столбцы - это столбцы в GROUP BY или статистической функции.

Если вы группируете по году и месяцу, то каждая строка будет содержать один год и месяц, поэтому для SQL невозможно узнать, какие другие столбцы отображать, поскольку их может быть больше одного.(например, две записи в блоге за один месяц)

Вы имели в виду ORDER BY вместо этого?

0 голосов
/ 02 января 2013

Примерно так: select convert(varchar(50),YEAR(date)) +'/'+convert (varchar(50), MONTH(date)) ,Name , COUNT( Name) ,[DATE] from table1 group by convert(varchar(50),YEAR(date)) +'/'+convert (varchar(50), MONTH(date)) ,Name,[date] order by [Date] Desc

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