Buenos dias por aca me encuentro desde hace 2 dias tratando de sacar un QUERY que se me ha complicado un poco, les explico
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 originalSELECT
(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