2016-08-15 91 views
1

我在执行代码以执行几项计算和设置列别名时遇到问题。Oracle SQL在选择查询中更新工资和列别名

情况说明:

管理层希望通过增加10%所有员工的工资。写一个查询来显示empid,当前的工资,增加的工资和增加的金额。

EmpId和Salary是EmpDetails表中的现有列。

的My Oracle SQL尝试:

SELECT 
EmpId, 
Salary AS 'Current Salary', 
Salary*1.10 AS 'New Salary', 
Salary*1.10-Salary AS 'Incremented Amount' 
FROM EmpDetails 

从我尝试的输出是什么。解释器不支持错误消息,并且在出现问题时出现错误显示有效代码的问题,这似乎是任何原因。这让我在学习Oracle SQL语法时感到困惑,所以这个问题可能是我尝试的语法。

有没有办法做到这一点作为一个详细的选择查询,就像我尝试过的,或者对于更新的SQL使用多个Alter/Update/Select命令可能是一个更简单的方法?

+1

单引号用于字符串文字,不能用它们作为标识符名称,例如列别名。正如答案中已经指出的那样,您需要使用双引号。或者更好的是,别名中没有空格,这样你根本不需要双引号。 – sstan

+0

谢谢!我想我意外地从http://www.w3schools.com/sql/sql_alias.asp拿起单引号而不是双引号。至于间距,我希望我可以不用空格,但在这个不成文的课程中测试你的解答的解释器对于正确的答案是非常具体的。 – BrightHalo

+0

关于w3schools的警告词。并非您在那里阅读的所有内容都可以在Oracle数据库中使用。语法可以在数据库之间有所不同,而w3schools似乎主要针对SQL Server。只是要记住。 – sstan

回答

2

用双引号括起别名。

SELECT 
EmpId, 
Salary AS "Current Salary", 
Salary*1.10 AS "New Salary", 
Salary*1.10-Salary AS "Incremented Amount" 
FROM EmpDetails 
+0

谢谢!对不起,我的部分发生了非常微小的语法错误。非语言课程只是教授非常基本的SELECT/INSERT/UPDATE查询的一部分,并且没有深入了解如何使用AS或其他任何似乎有必要执行与课程相关的分配的操作的操作。 – BrightHalo