我试图进行像该主题中那样的查询: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/