SQL Monthname在查询中显示

SQL Monthname在查询中显示,sql,Sql,我是SQL新手,目前正在学习一些培训材料 我需要:显示每月收到的报价的月份和数量 我的问题 SELECT Qdate AS MONTH ,COUNT (Quotationid)AS QUOTATIONCOUNT FROM Quotation GROUP BY Qdate ORDER BY Qdate ASC; 数据库结构 报价单(报价ID、Sname、项目代码、报价价格、Qdate、Qstatus) 你几乎是对的 下面是对Oracle的查询 SELECT to_char(Qdate, '

我是SQL新手,目前正在学习一些培训材料

我需要:显示每月收到的报价的月份和数量


我的问题

SELECT Qdate AS MONTH ,COUNT (Quotationid)AS QUOTATIONCOUNT
FROM Quotation
GROUP BY Qdate
ORDER BY Qdate ASC;
数据库结构

  • 报价单(报价ID、Sname、项目代码、报价价格、Qdate、Qstatus)

    • 你几乎是对的

      下面是对Oracle的查询

      SELECT to_char(Qdate, 'MONTH') AS "MONTH" ,COUNT (Quotationid)AS QUOTATIONCOUNT
      FROM Quotation
      GROUP BY to_char(Qdate, 'MONTH')
      ORDER BY "MONTH";
      

      并显示月份名称:

      • 在SQL Server中,您可以将
        DATENAME
        函数与
        DATEADD
        函数结合使用
        @MonthNum
        是您的月数,这意味着您可以使用:
        选择日期名称(月,日期添加(月,@MonthNum,0)-1)
      • 在MySQL中,您可以使用:
        MONTHNAME(date)

      您需要提取月份和年份以获得所需内容。众所周知,日期/时间函数依赖于数据库。在标准SQL中,您可以执行以下操作:

      SELECT EXTRACT(YEAR FROM Qdate) AS YYYY, 
             EXTRACT(MONTH FROM Qdate) AS MM, 
             COUNT(*) AS QUOTATIONCOUNT
      FROM Quotation
      GROUP BY EXTRACT(YEAR FROM Qdate), EXTRACT(MONTH FROM Qdate)
      ORDER BY MIN(Qdate) ASC;
      
      所需的特定功能取决于所使用的数据库

      要点:

      • 除非你有很好的理由,否则你不应该考虑没有年份的月份
      • 通常,您需要重复
        GROUP BY
        中的表达式,尽管有些数据库允许列别名(如上例中的
        GROUP BY YYYY,MM
      • ORDER BY
        需要使用一个表达式,该表达式只包含
        groupby
        或聚合函数中的表达式(因此
        ORDER BY QDate
        不起作用)

      大多数人希望样本表数据和预期结果是格式化文本,而不是图像(或图像链接)。您使用的是哪种dbms?(说到日期/时间,许多产品远远不符合ANSI SQL。)没有指定dbms的特定于产品的问题答案。至少告诉我们这是针对哪个dbms的。更新了答案。