【问题标题】:MONTH invalid identifier in OracleOracle 中的 MONTH 无效标识符
【发布时间】:2019-12-02 01:16:26
【问题描述】:

所有食材均在 11 月购买。显示每个项目的成分 ID、名称、订购日期、数量和单位(在一列中)、单价和总金额。按排序日期降序排列结果集。提示:总量是数量乘以单价。

SELECT ingredient_id, ingredient_name, date_ordered, "Quantity & Unit" AS Quantity,
unit_price * quantity AS "Total Amount"
FROM ingredient
WHERE MONTH (date_ordered) = 11
ORDER BY 'date_ordered' DESC;

它一直说 MONTH 无效标识符。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    您的代码中有多个问题:

    • MONTH 不是 oracle 中的有效函数
    • 'date_ordered' 无效,因为列名不允许使用单引号。

    您的代码应如下所示:

    SELECT ingredient_id, ingredient_name, date_ordered, "Quantity & Unit" AS Quantity,
    unit_price * quantity AS "Total Amount"
    FROM ingredient
    WHERE extract (MONTH from date_ordered) = 11 -- used extract function
    ORDER BY date_ordered DESC; -- removed single quotes
    

    还请注意,此查询将给出 11 月的所有记录,而与年份无关。

    干杯!!

    【讨论】:

      【解决方案2】:

      使用extract()函数

      SELECT ingredient_id, ingredient_name, date_ordered, "Quantity & Unit" AS Quantity, unit_price * quantity AS "Total Amount" FROM ingredient WHERE extract(month from date_ordered) = 11 ORDER BY 'date_ordered' DESC;
      

      另一个选项也是使用。

      To_Char(date_ordered,'MM') 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多