java - 如何在 Java 中的结果集中包含多个 Select 语句

标签 java oracle select resultset

我当前遇到的问题是我想选择一列并对值求和。然后我想总结同一个表中的另一列。目的是获取这两列的总和并减去它们以获得输出。我的用途是利用假期。员工每周都会获得休假时间。然后,当使用它们时,它们位于不同的列中。我需要计算出他们可以使用的剩余假期总数。 这就是我所拥有的:

try
    {
         //Getting Information FROM EMPLOYEE_TIME_LOG for Vacation
            Statement vacationLogstmt = dbConn.createStatement();
            ResultSet vacationLogSet = vacationLogstmt.executeQuery(
                         "(SELECT SUM(vacation_gained) FROM employee_time_log WHERE employee_id_number = " +userInputIdNumber + "), " +
                         "(SELECT SUM(vacation_used) FROM employee_time_log WHERE employee_id_number = " +userInputIdNumber + "), " +
                     "GROUP BY vacation_gained, vacation_used");

           vacationLogSet.next();
           String strVacationEarned = vacationLogSet.getString(1);
           String strVacationUsed = vacationLogSet.getString(2);
           Double vacationEarned = Double.parseDouble(strVacationEarned);
           Double vacationUsed = Double.parseDouble(strVacationUsed);
           Double totalVacation = (vacationEarned - vacationUsed); 
           String strTotalVacation =Double.toString(totalVacation);
           txtVacationTotal.setText(strTotalVacation);
    }
    catch (SQLException e)
    {
          //throw new JboException(e);
            System.err.println(e);
            String connectionError = "Problem with the database, please contact MIS.";
            JOptionPane.showMessageDialog(new JFrame(), connectionError, "Database Error",JOptionPane.ERROR_MESSAGE);
            txtUserSignIn.setText("");
            txtUserSignIn.requestFocus();      
    }

我收到一个错误: java.sql.SQLSyntaxErrorException: ORA-00933: SQL 命令未正确结束

这是否可以在一个结果集中完成?或者我是否需要制作单独的结果集来执行此操作。

最佳答案

您的 sql 有一些问题。首先,不能用逗号分隔多个选择。相反,您应该有一个包含多列的选择。其次,您不应该按 Vacation_gained、vacation_used 进行分组,因为您在聚合函数中使用这些字段。 sql 应如下所示:

"(SELECT SUM(vacation_gained), SUM(vacation_used) FROM employee_time_log WHERE employee_id_number = " + userInputIdNumber + ")";

或者,如果您只对剩余的假期时间感兴趣,您也可以将数学作为查询的一部分:

"(SELECT SUM(vacation_gained) - SUM(vacation_used) as total_vacation FROM employee_time_log WHERE employee_id_number = " + userInputIdNumber + ")";

关于java - 如何在 Java 中的结果集中包含多个 Select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31593516/

相关文章:

java - SONAR 问题 "main"不应该是 "throw"任何 JAVA 7

java - 每个进程创建 log4j 日志文件

sql - 将表格/ View 以 x 行的批处理导出到 .csv

sql - 按特定季度计算减法

mysql - SELECT 中的临时变量操作可见性

java - 如何使用 Apache Camel/Spring-boot 订阅持久主题?

java - 对象/实例问题?

sql - 复制同一表中的一行而无需键入 50 多个列名(同时更改 2 列)

javascript - 在 selectize api 下拉列表中获取 select 的当前索引

Perl dbi sqlite 'select * ..' 只返回第一个元素