2012-09-21 68 views
0

我正在查询计算给定的月份和年份的结果数量。不过,我还需要使用完整日期来创建一个月份字符串。我知道,select子句中的任何内容也必须在group by子句中。但是,我只想按月份和年份分组以获得正确的计数结果。我该如何解决这个问题?SQL服务器选择属性,但不是由该属性组

SELECT category, Count(ID), MONTH(aDate) AS month , YEAR(aDate) AS year, aDate, 
CONVERT(CHAR(4),aDate) , 100) + CONVERT(CHAR(4),aDate) , 120) as monthYear 
FROM table 
GROUP BY month, year, category 
+0

混淆使用convert语句作为你的团队的一部分,应该由分组没有什么区别月份,年份,类别和月份,年份,月份,类别 –

回答

1

你不需要使用整个日期,只是by子句

 SELECT category, 
     Count(ID), 
     MONTH(aDate) AS [month] , 
     YEAR(aDate) AS [year], 
     CONVERT(CHAR(4),aDate) , 100) + CONVERT(CHAR(4),aDate) , 120) as monthYear 
FROM table 
GROUP BY MONTH(aDate), 
     YEAR(aDate), 
     category, 
     CONVERT(CHAR(4),aDate) , 100) + CONVERT(CHAR(4),aDate) , 120) 
-1
SELECT MAX(category), Count(ID), MONTH(aDate) AS month , YEAR(aDate) AS year, MAX(aDate), 
CONVERT(CHAR(4),MAX(aDate)) , 100) + CONVERT(CHAR(4),MAX(aDate)) , 120) as monthYear 
FROM table 
GROUP BY MONTH(aDate), YEAR(aDate) 
+1

您应该解释_why_您是否做出了所做的更改。 – Sam