Sql 在Oracle中查看— ;语法错误
我正在尝试在Oracle中创建一个视图 编写查询(并另存为视图)以显示需要重新计算其总PAB的所有员工。 如果其最后计算日期在2015年4月1日至2015年4月4日之间,则需要重新计算 (当时有病毒报告,因此他们希望重新计算)或2015年6月1日(财政年度开始)与上次计算日期之间的差异大于175天。分类 地区名称,然后是员工的姓氏Sql 在Oracle中查看— ;语法错误,sql,oracle,Sql,Oracle,我正在尝试在Oracle中创建一个视图 编写查询(并另存为视图)以显示需要重新计算其总PAB的所有员工。 如果其最后计算日期在2015年4月1日至2015年4月4日之间,则需要重新计算 (当时有病毒报告,因此他们希望重新计算)或2015年6月1日(财政年度开始)与上次计算日期之间的差异大于175天。分类 地区名称,然后是员工的姓氏 当我尝试运行此命令时,我发现ORA-00933:SQL命令没有正确结束。我不知道语法有什么问题。请提供任何帮助。Oracle不支持表别名的AS关键字,因此 SELEC
当我尝试运行此命令时,我发现
ORA-00933:SQL命令没有正确结束
。我不知道语法有什么问题。请提供任何帮助。Oracle不支持表别名的AS
关键字,因此
SELECT D1.DISTRICT_NAME, E1.EMP_FNAME, E1.EMP_LNAME, T1.TAX_YEAR, T1.DATE_LAST_CALC
FROM DISTRICT AS D1, EMPLOYEE AS E1, TOTAL_PAB AS T1
WHERE T1.DATE_LAST_CALC BETWEEN '2015-04-01' AND '2015-04-04'
OR '2015-06-01' - T1.DATE_LAST_CALC > 175
ORDER BY DISTRICT_NAME, EMP_LNAME;
需要:
from district as d1, employee as e1, total_pab as t1
但这一质疑还有更多问题 因为在
where
子句中使用的是过时的、古老的隐式联接,所以没有注意到缺少三个表的联接条件
如果您将其重写为使用适当的JOIN
运算符,则会立即看到:
from district d1, employee e1, total_pab t1
还有一个条件:或'2015-06-01'-t1.date\u last\u calc>175
是一个错误,正好等待'2015-06-01'
不是日期
值,它是一个字符串常量,隐式转换为日期。最好使用显式的date
值。使用标准SQL文本:
SELECT d1.district_name, e1.emp_fname, e1.emp_lname, t1.tax_year, t1.date_last_calc
FROM district d1
JOIN employee e1 ON ?????
JOIN total_pab t1 ON ?????
或者使用Oracle的to_date()
函数:
date '2015-06-01' - t1.date_last_calc > 175`
您的介于之间的情况也是如此
也没有理由在SQL中用大写写所有内容Oracle不支持表别名的AS
关键字,因此
SELECT D1.DISTRICT_NAME, E1.EMP_FNAME, E1.EMP_LNAME, T1.TAX_YEAR, T1.DATE_LAST_CALC
FROM DISTRICT AS D1, EMPLOYEE AS E1, TOTAL_PAB AS T1
WHERE T1.DATE_LAST_CALC BETWEEN '2015-04-01' AND '2015-04-04'
OR '2015-06-01' - T1.DATE_LAST_CALC > 175
ORDER BY DISTRICT_NAME, EMP_LNAME;
需要:
from district as d1, employee as e1, total_pab as t1
但这一质疑还有更多问题
因为在where
子句中使用的是过时的、古老的隐式联接,所以没有注意到缺少三个表的联接条件
如果您将其重写为使用适当的JOIN
运算符,则会立即看到:
from district d1, employee e1, total_pab t1
还有一个条件:或'2015-06-01'-t1.date\u last\u calc>175
是一个错误,正好等待'2015-06-01'
不是日期
值,它是一个字符串常量,隐式转换为日期。最好使用显式的date
值。使用标准SQL文本:
SELECT d1.district_name, e1.emp_fname, e1.emp_lname, t1.tax_year, t1.date_last_calc
FROM district d1
JOIN employee e1 ON ?????
JOIN total_pab t1 ON ?????
或者使用Oracle的to_date()
函数:
date '2015-06-01' - t1.date_last_calc > 175`
您的介于之间的情况也是如此
也没有理由在SQL中用大写写所有内容您确定从oracle中的另一个日期减去一个日期会产生天数吗?为什么会产生几天而不是几秒钟?或者两周?米克纳基斯:是的,这就是OracleYes对日期的定义(并有明确的记录)。它说日期是以天为单位存储的在ANSI-92 SQL标准(20多年前)中,旧式的逗号分隔表列表样式被正确的ANSIJOIN
语法所取代,它的使用是不受欢迎的。您确定在oracle中,从另一个日期减去一个日期会产生天数吗?为什么会产生几天而不是几秒钟?或者两周?米克纳基斯:是的,这就是OracleYes对日期的定义(并有明确的记录)。它说日期是以天为单位存储的在ANSI-92 SQL标准(20多年前)中,旧式的逗号分隔的表列表样式被正确的ANSIJOIN
语法所取代,并且它的使用非常简单discouraged@apc:列表中没有明显的
query@apc:查询中没有明显的