java - JFreeChart 使用数字查询 ORACLE ERROR

标签 java sql swing jfreechart sqlexception

我试图进行像该主题中那样的查询:JFreeChart using numeric query ORACLE

生成条形图,但我总是收到该错误:java.sql.SQLException:JDBCCategoryDataset.executeQuery():从数据库返回的列不足。

我的代码如下:

SELECT CASE WHEN TIME>23.73 AND TIME<=24.0 THEN '23.73<TIME<=24.10' 
    WHEN TIME>24.10 AND TIME<=25.68 THEN '24.10<TIME<=25.68'           
    WHEN TIME>25.68 AND TIME<=27.36 THEN '25.68<TIME<=27.36' 
        ELSE '27.36<TIME'  
   END   || ' with value '|| COUNT(*) v  FROM SWIMMER 
GROUP BY CASE 
WHEN TIME>23.73 AND TIME<=24.10 THEN '23.73<TIME<=24.10' 
WHEN TIME>24.10 AND TIME<=25.68 THEN '24.10<TIME<=25.68'  
WHEN TIME>25.68 AND TIME<=27.36 THEN '25.68<TIME<=27.36' 
ELSE '27.36<TIME'  END

我做错了什么?

最佳答案

上面引用的 SQL 会导致错误(使用 SQL Fiddle 检查代码),因为两个 case 语句不匹配,JFreeChart 只是用误导性消息重新抛出错误。

如果您的 SQL 正确,JFreeChart 会告诉您结果集中需要其他列,因为您将 case 语句与查询总数连接起来,如果它有效,将只返回一列。

尝试使用此 SQL:

SELECT time_range || ' with value ' || total as category, total
  FROM (SELECT time_range, COUNT(*) AS total
          FROM (SELECT CASE
                         WHEN TIME > 23.73
                              AND TIME <= 24.0 THEN
                          '23.73<TIME<=24.10'
                         WHEN TIME > 24.10
                              AND TIME <= 25.68 THEN
                          '24.10<TIME<=25.68'
                         WHEN TIME > 25.68
                              AND TIME <= 27.36 THEN
                          '25.68<TIME<=27.36'
                         ELSE
                          '27.36<TIME'
                       END AS time_range
                  FROM swimmer)
         GROUP BY time_range)

关于java - JFreeChart 使用数字查询 ORACLE ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454428/

相关文章:

java - 设置博士编辑错误

c++ - PL/SQL - 设置空值

java - 从 JComboBox 显示 JTextField 中的数据

sql - 如何在 SQL 中查找去年的同一个工作日?

java - 为什么我的 JFrame 没有出现在基于 Web 的 Java 应用程序中?

java - 是否可以动态生成看起来不错的属性对话框?

当前目录中有多个 jar 文件的 javac 类路径选项导致错误

java - 尝试分块上传

java - 不幸的是,<project name> 已停止

mysql - 信息技术背景下的查迪姆