2010-07-17 4 views
0

Salut mon code ne fonctionne pas, Im essayant de regrouper mes blogentries par année et le mois est ici mon sqlsql: Groupe par mois et l'année

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) 
+5

indiquant simplement « mon code ne fonctionne pas » est pas très utile –

Répondre

2

Il serait utile de connaître le message d'erreur. Vous ne pouvez pas faire un SELECT * FROM si vous spécifiez GROUP BY.

Les seules colonnes valides sont celles du GROUP BY ou une fonction d'agrégat.

Si vous regroupez par année et par mois, alors chaque ligne contiendra une année et un mois, il est impossible pour SQL de savoir quelles autres colonnes afficher car il pourrait y en avoir plus d'une. (par exemple deux entrées de blog en un mois)

Vouliez-vous dire ORDER BY à la place?

+0

Je veux créer une liste asp.net de l'année, puis les mois une entrée de blog a été saisi – ONYX

+0

Est-ce que j'utiliserais DISTINCT dans l'instruction – ONYX

+0

'SELECT YEAR (ReleaseDate), MONTH (ReleaseDate)' au début devrait le faire, vous n'auriez pas besoin de 'DISTINCT' –

0

Simething comme ceci: 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