我在使用日期筛选器表达式时遇到问题。我使用的是SQL Developer,结果错误,结果底部出现未知命令错误。
select cmp.company_name, sum (inv.total_price), max (inv.invoice_date)
from companies cmp join invc_header inv on cmp.cmp_auto_key = inv.cmp_auto_key
group by cmp.company_name;
where inv.invoice_date = '2017-01-27'
我还使用了inv.invoice_date='2017-01-27'
错误是";未知命令";
Jeff
您正在获得"未知命令错误";因为您的查询中间有一个半圆形的CCD_ 1。分号用于终止一个语句,因此SQL解析器认为在第一个语句之后有第二个语句where inv.invoice_date = '2017-01-27'
,而它不知道如何解析它
要解决此问题,WHERE
子句需要位于GROUP BY
之前。
除此之外,'2017-01-27'
不是日期;它是一个字符串文字,恰好看起来像一个日期。DATE '2017-01-27'
是日期文字,也可以使用函数TO_DATE( '2017-01-27', 'YYYY-MM-DD' )
将字符串显式转换为日期。
SELECT cmp.company_name,
SUM(inv.total_price),
MAX (inv.invoice_date)
FROM companies cmp
JOIN invc_header inv
ON cmp.cmp_auto_key = inv.cmp_auto_key
WHERE inv.invoice_date = DATE '2017-01-27'
GROUP BY cmp.company_name
您的语法已关闭。您需要在GROUP BY
之前设置WHERE
子句。此外,如果要将日期指定为YYYY-MM-DD格式的字符串,则可以添加关键字;
0,以将该值视为日期类型而不是字符串。
SELECT cmp.company_name, SUM (inv.total_price), MAX (inv.invoice_date)
FROM companies cmp JOIN invc_header inv ON cmp.cmp_auto_key = inv.cmp_auto_key
WHERE inv.invoice_date = date '2017-01-27'
GROUP BY cmp.company_name;