【发布时间】:2013-11-28 20:15:58
【问题描述】:
我无法让存储过程为我提供这种类型的输出:
+-----------+------------------+ |月 |没有修改 | +-----------+------+ | 2008 年 1 月 | 5 | | 2008 年 11 月 | 6 | | 2010 年 2 月 | 20 | | 2013 年 7 月 | 7 | +-----------+--------------------+
到目前为止,我设法让输出看起来像这样,但我还没有设法让输出按年排序,然后按月排序 - 它是按字母顺序排列的。这是我目前所拥有的:
SELECT convert(varchar(4), YEAR(LastModifedDate)) + ' ' + convert(varchar(3),datename(month, LastModifedDate)) as Dates,
count(*) as Number
FROM aims.Modification
WHERE CompanyID = @companyID
AND LastModifedDate >= DATEADD(month, @numberOfMonths * -1, GETDATE())
GROUP BY convert(varchar(4), YEAR(LastModifedDate)) + ' ' + convert(varchar(3),datename(month, LastModifedDate))
我确实在日期时间字段上尝试了 ORDER BY,但得到了:
Column "aims.Modification.LastModifedDate" is invalid in the ORDER BY clause because it is not contained in either an aggregate function or the GROUP BY clause.
在日期时间转换/选择/分组到字符串时也很混乱。那里的任何建议也会非常有帮助!
提前致谢!
【问题讨论】:
-
如果将结果输出到网页或类似的东西,请在查询中添加另一个字符串,以 yyyymm 格式表示日期。按该字段排序,不要在您的应用程序中显示它。
标签: sql sql-server datetime count group-by