I was trying to make a query like in that topic: JFreeChart using numeric query ORACLE
to generate a barchart, but i am always receiving that error: java.sql.SQLException: JDBCCategoryDataset.executeQuery() : insufficient columns returned from the database.
My code is as follow:
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
What i am doing wrong?
The SQL you have quoted above results in an error (using SQL Fiddle to check the code) as the two case statements don't match JFreeChart is just re-throwing the error with a misleading message.
If your SQL is correct JFreeChart is telling you that you need additional columns in your result set as you are concatenating your case statement with the total your query, if it worked, would only return one column.
Try using this 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)