如何在sql中显示每月数据库?

如何在sql中显示每月数据库?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个疑问: declare @startdate datetime='1/1/2012', @endate datetime='12/31/2012' select * from hours1 where date_start between @startdate and @enddate 我想显示如下数据: Jan feb March ... December 能帮我怎么弄到这个吗 我假设您希望显示开始日期和结束日期之间的月份 declare @startdate datetime='

我有一个疑问:

declare @startdate datetime='1/1/2012', @endate datetime='12/31/2012'
select * from hours1
where date_start between @startdate and @enddate
我想显示如下数据:

Jan
feb
March
...
December

能帮我怎么弄到这个吗

我假设您希望显示开始日期和结束日期之间的月份

declare @startdate datetime='1/1/2012', 
        @endate datetime='12/31/2012'

SELECT
    DATENAME(month, date_start) 
FROM
    hours1
WHERE
    date_start between @startdate and @enddate
GROUP BY 
    DATENAME(month, date_start), 
    DATEPART(month, date_start)
ORDER BY
    DATEPART(month, date_start)

如果要按月汇总数据,请使用日期函数:

select count(<count_grouped_items), sum(<sum_of_grouped_items>), ...

from hours1 
where date_start between @startdate and @enddate 
group by YEAR(date_start), MONTH(date_start) 
order by YEAR(date_start) asc, MONTH(date_starts) asc

选择计数(那么,你想缩写1月和2月…但不是3月和12月…其他月份呢?那么你想按月份分组,除了月份名称之外,你想显示什么?你想汇总一列还是获得行数?是的,我想按月份名称和年份显示数据组。我正在计算总和(小时)所以我想显示每个月使用的小时数。@SQlearner:为什么不准确地显示某些月份的数据,描述每列应该是什么(月份名称、总和…,等等)并指出表格中的相关列。这样人们就可以回答问题,而不是猜测你想做什么。你能给我们举一个“小时1”表格的例子吗?:但我希望group by取决于startdate和enddate,如果startdate为2013年3月1日,enddate为“2012年6月30日”,那么它应该显示如下数据:3月4月5月6日……如果我使用您的逻辑,它只显示1月,您没有这些月份的任何数据。(如果
end\u date
start\u date
不在同一年,它可能会显示1月):但是我希望group by取决于startdate和enddate,如果startdate是2013年3月1日,enddate是'6/30/2012',那么它应该显示如下数据:3月4月5月6日…如果我使用您的逻辑,它只显示1月–如您所写“声明startdate datetime='2012年1月1日',endate datetime='2012年12月31日'”,因此它在2012年每个月分组。我假设“date\u start”“是表中的字段名,每行包含一个日期,只要您没有定义表中实际包含的字段,我上面的查询就不完整,它只显示了如何按月份分组。正如Magnus已经提到的,您可以按日期名检索月份的名称。”