org how gui create db2 h2

how - Sintaxis de DB2 cuando se ejecuta H2(en modo DB2)



org h2 (1)

Tengo la siguiente consulta que funciona bien cuando se ejecuta directamente contra DB2:

String sql = "select slutt_dato + 1 day as tDato from klv80201 " + "union " + "select fra_dato as tDato from klv12101 where avtalenr = :avtalenr and kundenr = :kundenr " + "union " + "select fra_dato as tDato from klv12401 where avtalenr = :avtalenr and kundenr = :kundenr and MEDLEMSTATU < ''32'' " + "order by tDato desc fetch first 1 rows only;";

Pero cuando lo ejecuto a través de una prueba con H2 como base de datos con la siguiente configuración:

jdbc:h2:mem:play;MODE=DB2;LOCK_TIMEOUT=10000;LOCK_MODE=0

Aparece el siguiente mensaje de error:

org.h2.jdbc.JdbcSQLException: Columna "SLUTT_DATO" no encontrada; Instrucción SQL: seleccione slutt_dato + 1 día como tDato de klv80201 union select fra_dato como tDato de klv12101 donde avtalenr =? y kundenr =? unión seleccione fra_dato como tDato de klv12401 donde avtalenr =? y kundenr =? y MEDLEMSTATU <''32'' orden por tDato desc buscar las primeras 1 filas solamente; [42122-149]

Si elimino el "+1 día", la consulta funciona bien en H2. El mensaje de error del controlador H2 JDBC es incorrecto, la columna "SLUTT_DATO" existe y funciona bien al eliminar "+1 día".

¿Alguna buena sugerencia de por qué H2 actúa como lo hace? ¿Es un error o soy yo quien no entiende algo?

Gracias por adelantado


H2 no comprende + 1 day y se confunde aquí. Esto funcionará sin embargo:

"select slutt_dato + 1 as tDato from klv80201 "

Pero me temo que esto no funcionará para IBM DB2 ... No creo que haya una solución fácil a este problema que funcione tanto en IBM DB2 como en H2.