неправильная грамматика SQL ... Столбец "COUNT (status)" не найден - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть пакетное задание, которое я тестирую с базой данных H2 в памяти. У меня есть читатель, который прекрасно работает с базой данных, установленной на моем компьютере. Но когда я тестирую его, используя H2, я получаю эту ошибку:

org.springframework.jdbc.BadSqlGrammarException: попытка обработки следующей строки не удалась; неверная грамматика SQL [выберите имя, возраст, статус, COUNT (STATUS) из myTable]; вложенным исключением является org.h2.jdbc.JdbcSQLException: столбец «COUNT (status)» не найден [42122-197]

Это мой читатель. Я не знаю, почему я получаю выше ошибки.

JdbcCursorItemReader<myObject> reader = new JdbcCursorItemReader<>();
reader.setSql("select name, age, status, COUNT(STATUS) from myTable
where name="something",
group by name, age, status
order by name, age, status);

1 Ответ

0 голосов
/ 08 ноября 2018

Звучит так, как будто некоторые процессоры добавили backtics вокруг COUNT(STATUS).

COUNT(STATUS) может быть не то, что вы хотели. Для каждой строки (с именем = "что-то" для каждого возраста) отметьте STATUS как значение NOT NULL, затем укажите количество не равных нулю.

COUNT(*) - это обычный способ подсчета количества строк.

Следующая проблема, ... GROUP BY age, но вы перечислили name и status. Какой name вы ожидаете для каждого возраста?

Но есть еще одна загадка. Я вижу 3 двойные кавычки ("). Думаю об этом. Подумайте об использовании одинарных кавычек для внутренней или внешней потребности.

...