日付を年月でグルーピングして集計

【日付列(datetime型)を年月日ではなく年月ごとに集計したい】

w_sqlstr = "select CONVERT(varchar(7), 出荷DB.出荷日, 111) as 出荷年月,"
w_sqlstr = w_sqlstr & " Sum(出荷DB.出荷数) as 年月別出荷数"
w_sqlstr = w_sqlstr & " from 出荷DB"
w_sqlstr = w_sqlstr & " where 出荷DB.出荷数 > 0"
w_sqlstr = w_sqlstr & " group by CONVERT(varchar(7), 出荷DB.出荷日, 111)"
w_sqlstr = w_sqlstr & " order by CONVERT(varchar(7), 出荷DB.出荷日, 111)"

出荷年月  年月別出荷数
2013/04   10
2013/05   20
2013/06   30


2014/06   30

【日付列(datetime型)を年月日ではなく月ごとに集計したい】
この場合、前年や翌年も集計される

w_sqlstr = "select SUBSTRING(CONVERT(varchar, 出荷DB.出荷日, 111),6,2) as 出荷月,"
w_sqlstr = w_sqlstr & " Sum(出荷DB.出荷数) as 月別出荷数"
w_sqlstr = w_sqlstr & " from 出荷DB"
w_sqlstr = w_sqlstr & " where 出荷DB.出荷数 > 0"
w_sqlstr = w_sqlstr & " group by SUBSTRING(CONVERT(varchar, 出荷DB.出荷日, 111),6,2)"
w_sqlstr = w_sqlstr & " order by SUBSTRING(CONVERT(varchar, 出荷DB.出荷日, 111),6,2)"

出荷月  月別出荷数
04   10
05   20
06   60