首页 > 解决方案 > 如何检索表示结果集中总和的“总”变量

问题描述

我正在制作一个 JavaFX/SQL 程序,代表客户和客户支出之间的数据。我正在尝试计算特定客户端的总客户端支出并在 Javafx 文本区域中输出。

我的 Transactions 表包含 Date、Description、Amount、Clientname 和 Transaction_ID,其中 Transaction_ID 是主键。

这是我的方法 "calculate_client_spending" "Result_transaction" 是我的全局 TextArea 变量:

public void calculate_client_spending(){
        try {
        ConnectionClass Databaseloader = new ConnectionClass();
        Databaseloader.getConnection();
       String sql = "SELECT t.Amount, t.Clientname\n" +
      "  FROM Transactions AS t\n" +
      "  JOIN (SELECT Clientname, SUM(Amount) AS total\n" +
      "          FROM Transactions\n" +
       "        WHERE Clientname = 'Gaylord420') AS s ON t.Clientname = 
      s.Clientname";
      ResultSet rs =  Databaseloader.executeSQLRequestCommand(sql);

          rs.next();
          Results_trasactions.setText("");
          Results_trasactions.setText("The total profits today are: " + 
      rs.getInt("total"));
        }
        }
     catch (SQLException e) {
        System.err.println("Got an exception! ");
        System.err.println(e.getMessage());
    }
    }

方法方法返回:“出现异常!未找到列‘总计’。”

似乎认为“总计”是一个列,但它是一个别名,而不是我的“事务”表中的一个属性。总数应该是最终查询的结果。如果有帮助,我的查询是根据这篇文章构建的:

如何在 SQL 中获取具有相同 ID 的列的总和?

任何帮助都会很棒。被这个问题困了一个月了。

标签: javamysqlsqljdbcalias

解决方案


您没有totalselect列表中包含该列,因此在您的代码中仅返回 2 列:AmountClientname.
改成这样:

String sql = "SELECT t.Amount, t.Clientname, s.total\n" +
...........................................................

推荐阅读