从日期列中获取月份名称

时间:2017-05-02 03:29:56

标签: sql

我们在名为"bus_date"的表上有一个名为"wmw_st_bte"的日期列名称。运行SQL查询时,日期格式如下所示 (select bus_date from wmw_st_bte bet):“28 / JUN / 04”。我们希望从该表中按月汇总总销售额。所以结果看起来应该是这样的。

Month: January 2004  or JAN 04 Sales: 10000
Month: February 2004 or FEB 04 Sales: 15000

所以基本上我们需要正确的查询来从日期列“bus_date”获取汇总的月份名称。有人可以帮忙吗?

我们尝试了以下查询,但它在月份列下提供了以下格式而不是月份名称:

月:1销售额:10000

月:2销售额:20000

我知道如何获得月份名称和年份吗?

我们使用的查询:

SELECT 
  EXTRACT(MONTH FROM bus_date) AS month
, SUM (sales) AS sales

FROM wmw_st_bte

GROUP BY
  EXTRACT(MONTH FROM bus_date)

ORDER BY
  EXTRACT(MONTH FROM bus_date)

3 个答案:

答案 0 :(得分:0)

我认为你需要像

这样的东西
select EXTRACT( YEAR_MONTH FROM bus_date ) , 
sum(sales) as sales
from wmw_st_bte
group by EXTRACT( YEAR_MONTH FROM bus_date )

答案 1 :(得分:0)

这里有一个想法如何查询它。 您可以这样尝试(使用SQL SERVER)

SELECT  SUM(Sales) Sales,cMonthYear
FROM    (
        SELECT Sales,(DATENAME(month,bus_date) + ' ' +CAST(YEAR(bus_date) AS VARCHAR(4))) cMonthYear,
               MONTH(bus_date) nMonth,YEAR(bus_date) nYear
        FROM wmw_st_bte
        )A
GROUP BY cMonthYear,nMonth,nYear
ORDER BY nYear,nMonth

我在初始/内部SELECT语句中包含了月份和年份,因此我可以对最终结果进行排序/排序。

如果要使用日期范围[开始日期]和[结束日期]查询它。您可以像这样在内部查询上插入WHERE子句。

SELECT  SUM(Sales) Sales,cMonthYear
FROM    (
        SELECT Sales,(DATENAME(month,bus_date) + ' ' +CAST(YEAR(bus_date) AS VARCHAR(4))) cMonthYear,
               MONTH(bus_date) nMonth,YEAR(bus_date) nYear
        FROM wmw_st_bte
        WHERE bus_date BETWEEN [Start Date] AND [End Date]
        )A
GROUP BY cMonthYear,nMonth,nYear
ORDER BY nYear,nMonth

答案 2 :(得分:0)

我能够通过放置to_char函数来解决问题:

选择   to_char(bus_date,'MON-YYYY')AS month_year ,SUM(销售)AS销售

FROM wmw_st_bte

GROUP BY   bus_date

ORDER BY   bus_date