Tengo que unir dos tablas diferentes, sym33 y sym, y luego verificar la diferencia entre la fecha de servicio máxima (max svcdate) y la fecha de servicio mínima (min svcdate), la cual debería ser mayor a 90 días.
crear tabla temporal sand_scipher_ds_db.public.Rf como (
seleccionar PATIENTID, max(SVCDATE)-min(SVCDATE) como days de symphony_hvh_db.sym33.dx
union all
seleccionar PATIENTID, max(SVCDATE)-min(SVCDATE) como days de symphony_hvh_db.sym.dx
agrupar por PATIENTID
teniendo days>90
limite 100
);
seleccionar * de sand_scipher_ds_db.public.Rf limite 100
error:
Error de compilación SQL: [DX.PATIENTID] no es una expresión válida para agrupar por
davy.ai
Solución:
El mensaje de error indica que la columna
DX.PATIENTID
no es una expresión válida para agrupar. En la segunda declaración select de la consulta, la cláusulagroup by
se utiliza para agrupar los resultados por la columnaPATIENTID
. Sin embargo, parece que la columna no está presente en la tablaDX
. Para solucionar este error, debes asegurarte de utilizar los nombres de tabla y columna correctos en la consulta.También es importante tener en cuenta que la cláusula
union all
se utiliza para combinar los resultados de dos declaraciones select. La primera declaración select no tiene una cláusulagroup by
, por lo que devolverá la fecha máxima y mínima (SVCDATE
) para todos los pacientes. La segunda declaración select tiene una cláusulagroup by
en la columnaPATIENTID
, por lo que devolverá la fecha máxima y mínima (SVCDATE
) para cada paciente por separado, pero solo para aquellos pacientes que tengan una diferencia de más de 90 días.Finalmente, la cláusula
limit 100
se utiliza para limitar el conjunto de resultados a las primeras 100 filas.Para solucionar el error, debes asegurarte de utilizar los nombres de tabla y columna correctos en la consulta. Por ejemplo:
En esta consulta actualizada, la cláusula
group by
se utiliza solo en la primera declaración select, y se utiliza la cláusulawhere
en la segunda declaración select para filtrar los resultados. Además, la cláusulahaving
se ha reemplazado por la cláusulawhere
, ya quedías
no es un nombre de columna válido para utilizar en la cláusulahaving
.Ten en cuenta que esto es solo un ejemplo, y debes asegurarte de que los nombres de tabla y columna sean correctos para tu escenario específico. Además, ten en cuenta cualquier implicación de rendimiento al utilizar tablas temporales y limitar los conjuntos de resultados.