Oracle SQL缺少关键字

Oracle SQL缺少关键字,sql,oracle,Sql,Oracle,我试图显示给定月份(2014年1月)最流行的产品(format_id),并根据每个format_id的计数对它们进行分组 我的问题是: select PRODUCT, AMOUNT from (Select Order_108681091.Order_Date, order_line_108681091.Format_id as Product, COUNT(*) AS AMOUNT FROM order_line_108681091 Inner Join order_108681091

我试图显示给定月份(2014年1月)最流行的产品(format_id),并根据每个format_id的计数对它们进行分组

我的问题是:

select PRODUCT, AMOUNT
from (Select Order_108681091.Order_Date, order_line_108681091.Format_id as Product,   
COUNT(*) AS AMOUNT FROM order_line_108681091 
Inner Join order_108681091
On order_108681091.order_id = order_line_108681091.order_id
Where order_108681091.Order_Date like '%JAN-14%'
group by Format_id
order by AMOUNT desc);

如何执行此操作?

您必须指定内部联接:

inner join order_108681091 ON order_1078681091.ID = order_line_018681091.ID

或者类似的。此外,除非将日期存储为字符串而不是日期时间数据类型,否则where子句可能无法工作。

必须指定内部联接:

inner join order_108681091 ON order_1078681091.ID = order_line_018681091.ID

或者类似的。此外,除非将日期存储为字符串而不是日期时间数据类型,否则where子句可能无法工作。

必须指定内部联接:

inner join order_108681091 ON order_1078681091.ID = order_line_018681091.ID

或者类似的。此外,除非将日期存储为字符串而不是日期时间数据类型,否则where子句可能无法工作。

必须指定内部联接:

inner join order_108681091 ON order_1078681091.ID = order_line_018681091.ID
或者类似的。此外,除非将日期存储为字符串而不是日期时间数据类型,否则where子句可能无法工作

  • 你说你有这个条件,所以让我们从添加它开始
  • 无需按订购,因此将其删除
  • 从子查询中删除订单日期
    SELECT
  • 使用别名
  • 子查询本身就足够了
  • 选择l.Format_id作为产品, 将(*)计为金额 来自订单行108681091 l 内部连接顺序_108681091 o 在o.order\u id=l.order\u id上 其中订单日期为“%1-14%” 分组 l、 格式标识;
  • 你说你有这个条件,所以让我们从添加它开始
  • 无需按订购,因此将其删除
  • 从子查询中删除订单日期
    SELECT
  • 使用别名
  • 子查询本身就足够了
  • 选择l.Format_id作为产品, 将(*)计为金额 来自订单行108681091 l 内部连接顺序_108681091 o 在o.order\u id=l.order\u id上 其中订单日期为“%1-14%” 分组 l、 格式标识;
  • 你说你有这个条件,所以让我们从添加它开始
  • 无需按订购,因此将其删除
  • 从子查询中删除订单日期
    SELECT
  • 使用别名
  • 子查询本身就足够了
  • 选择l.Format_id作为产品, 将(*)计为金额 来自订单行108681091 l 内部连接顺序_108681091 o 在o.order\u id=l.order\u id上 其中订单日期为“%1-14%” 分组 l、 格式标识;
  • 你说你有这个条件,所以让我们从添加它开始
  • 无需按订购,因此将其删除
  • 从子查询中删除订单日期
    SELECT
  • 使用别名
  • 子查询本身就足够了
  • 选择l.Format_id作为产品, 将(*)计为金额 来自订单行108681091 l 内部连接顺序_108681091 o 在o.order\u id=l.order\u id上 其中订单日期为“%1-14%” 分组 l、 格式标识;
    您根本不需要子查询。而且,我很不喜欢在约会中直接使用
    ,比如
    。将日期显式转换为字符串:

    select ol.Format_id as Product, COUNT(*) AS AMOUNT 
    from order_line_108681091 ol Inner Join
         order_108681091 o
         ON o.order_id = ol.order_id
    where to_char(o.Order_Date, 'MMM-YYYY') = 'JAN-2014'
    group by ol.Format_id
    order by count(*) desc;
    
    实际上,如果您在
    OrderDate
    上有索引,您可以使用以下内容(利用索引):

    选择ol.Format\u id作为产品,计数(*)作为金额
    从订单线到内部连接108681091
    订单号:108681091 o
    ON o.order\U id=ol.order\U id
    其中订单日期>=截止日期(“2014-01-01”、“YYYY-MM-DD”)和
    o、 订单日期<截止日期('2014-02-01','YYYY-MM-DD')
    按ol.Format\u id分组
    按计数排序(*)说明;
    

    将函数从列移动到常量允许在列上使用索引。

    您根本不需要子查询。而且,我很不喜欢在约会中直接使用
    ,比如
    。将日期显式转换为字符串:

    select ol.Format_id as Product, COUNT(*) AS AMOUNT 
    from order_line_108681091 ol Inner Join
         order_108681091 o
         ON o.order_id = ol.order_id
    where to_char(o.Order_Date, 'MMM-YYYY') = 'JAN-2014'
    group by ol.Format_id
    order by count(*) desc;
    
    实际上,如果您在
    OrderDate
    上有索引,您可以使用以下内容(利用索引):

    选择ol.Format\u id作为产品,计数(*)作为金额
    从订单线到内部连接108681091
    订单号:108681091 o
    ON o.order\U id=ol.order\U id
    其中订单日期>=截止日期(“2014-01-01”、“YYYY-MM-DD”)和
    o、 订单日期<截止日期('2014-02-01','YYYY-MM-DD')
    按ol.Format\u id分组
    按计数排序(*)说明;
    

    将函数从列移动到常量允许在列上使用索引。

    您根本不需要子查询。而且,我很不喜欢在约会中直接使用
    ,比如
    。将日期显式转换为字符串:

    select ol.Format_id as Product, COUNT(*) AS AMOUNT 
    from order_line_108681091 ol Inner Join
         order_108681091 o
         ON o.order_id = ol.order_id
    where to_char(o.Order_Date, 'MMM-YYYY') = 'JAN-2014'
    group by ol.Format_id
    order by count(*) desc;
    
    实际上,如果您在
    OrderDate
    上有索引,您可以使用以下内容(利用索引):

    选择ol.Format\u id作为产品,计数(*)作为金额
    从订单线到内部连接108681091
    订单号:108681091 o
    ON o.order\U id=ol.order\U id
    其中订单日期>=截止日期(“2014-01-01”、“YYYY-MM-DD”)和
    o、 订单日期<截止日期('2014-02-01','YYYY-MM-DD')
    按ol.Format\u id分组
    按计数排序(*)说明;
    

    将函数从列移动到常量允许在列上使用索引。

    您根本不需要子查询。而且,我很不喜欢在约会中直接使用
    ,比如
    。将日期显式转换为字符串:

    select ol.Format_id as Product, COUNT(*) AS AMOUNT 
    from order_line_108681091 ol Inner Join
         order_108681091 o
         ON o.order_id = ol.order_id
    where to_char(o.Order_Date, 'MMM-YYYY') = 'JAN-2014'
    group by ol.Format_id
    order by count(*) desc;
    
    实际上,如果您在
    OrderDate
    上有索引,您可以使用以下内容(利用索引):

    选择ol.Format\u id作为产品,计数(*)作为金额
    从订单线到内部连接108681091
    订单号:108681091 o
    ON o.order\U id=ol.order\U id
    其中订单日期>=截止日期(“2014-01-01”、“YYYY-MM-DD”)和
    o、 订单日期<截止日期('2014-02-01','YYYY-MM-DD')
    按ol.Format\u id分组
    按计数排序(*)说明;
    

    将函数从列移动到常量允许在列上使用索引。

    内部联接
    需要一个条件从表到另一个表的内部联接没有on子句似乎不寻常