GROUP BY表达式(列的一部分)而不是整列

时间:2013-01-10 20:10:54

标签: sql sql-server

我正在创建一个查询: 我需要获得每年的回报数量。

ReturnDate是每个成员在返回时的具体日期。 为了得到我正在使用的LEFT(ReturnDate,4)年。

到目前为止看起来还不错,但是我需要列表来显示该城市的年份,城市和完整的退货数量,例如:

YEAR       CITY        QUANTITY
2011       London      300
2011       Stockholm   40
2012       London      250

现在,我没有得到:

YEAR       CITY        QUANTITY
2011       London      200
2011       London      100
2011       Stockholm   30
2011       Stockholm   10
2012       London      250

这是我到目前为止所提出的:

 SELECT LEFT(ReturnDate,4) AS Year, City, COUNT(ReturnDate) AS Quantity 
 FROM Member
 GROUP BY ReturnDate, City

2 个答案:

答案 0 :(得分:3)

尝试:

GROUP BY LEFT(ReturnDate, 4), City

答案 1 :(得分:1)

或者,您可以尝试使用DATEPART

SELECT DATEPART(yyyy, ReturnDate) AS Year, City, COUNT(ReturnDate) AS Quantity 
FROM Member
GROUP BY DATEPART(yyyy, ReturnDate), City