总结MONTH值

时间:2016-08-10 11:06:39

标签: sql

我有一个简单的陈述开始:

SELECT a.product, MONTH(a.saledate) AS Month, Count(*) AS Total

例如,

产生的结果
Product          Month        Total

Bike               8               1000

任何人都可以建议是否可以在此查询中添加月份名称,并且是否也可以每月显示总数?

谢谢!

2 个答案:

答案 0 :(得分:2)

获得月份名称有两种方法

1)

SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (MONTH(a.saledate) * 4) - 3, 3)

2)

DATENAME(month, a.saledate)

有些人说你可能在使用MYSQL:

然后得到月份名称:

SELECT MONTHNAME( a.saledate);

答案 1 :(得分:2)

示例中的查询计算表格中的所有行,然后在随机选择的行的产品和销售日期旁边显示该计数。那几乎可以肯定 - 不是你想要的。 MySQL就是这样古怪的。其他DBMS拒绝您的示例查询。

如果您想显示已售产品的月度摘要,请参阅以下基本查询:

 SELECT a.product, 
        LAST_DAY(a.saledate) AS month_ending,
        COUNT(*) AS Total
   FROM table a
  GROUP BY a.product, LAST_DAY(a.saledate)

The LAST_DAY() function是从日期中提取月份和年份的好方法。

最后,如果要显示月份的文本名称,可以使用the DATE_FORMAT() function来执行此操作。 %b作为格式说明符提供三个字母的月份名称,%M给出完整的月份名称。所以这个查询就可以了。

 SELECT a.product, 
        LAST_DAY(a.saledate) AS month_ending,
        DATE_FORMAT(LAST_DAY(a.saledate), '%M %Y')) AS month
        COUNT(*) AS Total
   FROM table a
  GROUP BY a.product, LAST_DAY(a.saledate)

在SQL Server 2012+中,您可以使用the EOMONTH() function代替LAST_DAY()

在SQL Server 2008+中,您可以使用DATENAME(mm, a.saledate)从日期中检索月份名称。