Tengo unas solicitudes de transportes que son guardadas en la base de datos las mismas deben ser atendidas y tienen una hora y fecha de inicio y una hora y fecha de finalización,
cual es el problema? yo quisiera mostrar cuales son los vehiculos que estan disponibles de acuerdo a las otras solicitudes que fueron aprobadas y estan por iniciar o ya estan siendo atendidas es decir de acuerdo a la hora y fecha de inicio y la hora y fecha de finalización de las otras solicitudes que ya se encuentran siendo atendidas y tambien mostrar los vehiculos que estan disponibles pero que no estan atendiendo solicitudes es decir que ya finalizaron la atencion de solicitudes o simplemente que no han atendido solicitudes (nuevos).
YO tengo unas tablas dentro de la base de datos para este caso que esta conformada de la siguiente manera:
tabla: tbl_status
tiene los siguientes campos id_status y descripcion
5 - Esperando Autorización
6 - Autorizado / Por Iniciar
7 - En Ejecución
8 - Finalizado
hasta ahora he tenido exito con que me muestre las placas que estan disponibles deacuerdo a las fechas (Inicio y finalización) pero no he logrado que ademas de eso me muestre las placas disponibles que no han atendido solicitudes es decir que estan en la tabla 'tbl_placa' pero no en la tabla 'tbl_solciitud' aqui mi query ahsta ahora
Código SQL:
Ver original
SELECT (array_to_string( array( SELECT CASE WHEN ((('2014-10-01' NOT BETWEEN s2.fecha_salida AND s2.fecha_regreso)) AND (('2014-10-10' NOT BETWEEN s2.fecha_salida AND s2.fecha_regreso))) AND (s2.id_status = 6 OR s2.id_status = 7) THEN '|' || CAST(pl2.codigo AS text) WHEN (( array_to_string( array(SELECT pl4.codigo FROM tbl_vehiculo v4 LEFT JOIN tbl_caracteristicas_vehiculo cv4 ON cv4.id_caracteristicas_vehiculo = v4.id_caracteristicas_vehiculo LEFT JOIN tbl_placa pl4 ON pl4.id_placa = cv4.id_placa EXCEPT SELECT pl3.codigo FROM tbl_solicitud s3 LEFT JOIN tbl_solicitud_vehiculo sv3 ON sv3.id_solicitud = s3.id_solicitud LEFT JOIN tbl_vehiculo v3 ON v3.id_vehiculo = sv3.id_vehiculo LEFT JOIN tbl_caracteristicas_vehiculo cv3 ON cv3.id_caracteristicas_vehiculo = v3.id_caracteristicas_vehiculo LEFT JOIN tbl_placa pl3 ON pl3.id_placa = cv3.id_placa WHERE codigo IS NOT NULL), ','))) THEN '|' || CAST(pl2.codigo AS text) END AS vehiculo FROM tbl_vehiculo vh2 LEFT JOIN tbl_solicitud_vehiculo sv2 ON sv2.id_vehiculo = vh2.id_vehiculo LEFT JOIN tbl_solicitud s2 ON s2.id_solicitud = sv2.id_solicitud LEFT JOIN tbl_caracteristicas_vehiculo cv2 ON cv2.id_caracteristicas_vehiculo = vh2.id_caracteristicas_vehiculo LEFT JOIN tbl_placa pl2 ON pl2.id_placa = cv2.id_placa ),',') )
el error que me da es:
ERROR: el argumento de CASE/WHEN debe ser de tipo boolean, no tipo text
LÍNEA 6: when (( array_to_string( array(select pl4.codigo from tbl_v