我需要最后一个日期的最后一条记录,我有以下查询
SELECT creditos.NombreCliente,
creditos.Contrato,
creditos.Rut,
creditos.lIdtplCabezaCotiza,
creditos.FechaPagare,
creditos.FechaCurse,
creditos.FechaVcto1,
creditos.FechaVcto2,
creditos.FormaPago,
creditos.EstadoMandato,
REPLACE(CuentaCorriente,',','.') as CuentaCorriente ,
creditos.Sucursal,
creditos.cFyI,
creditos.FechaUltimoPago,
estado_creditos_banco.`Fecha Activación` AS FechaActivacion, estado_creditos_banco.`Detalle de Rechazo` AS DetalleRechazo, MAX(estado_creditos_banco.`Fecha Recepción CCA`), estado_activos_banco.Observaciones, estado_creditos_banco.`Estado General` AS EstadoActivacion,
creditos.EmailCliente,
REPLACE(creditos.TelefonosCliente,',','-') as Telefono
FROM creditos
LEFT JOIN estado_creditos_banco ON estado_creditos_banco.Identificador = creditos.lIdtplCabezaCotiza
LEFT JOIN estado_activos_banco ON estado_activos_banco.`# Cotiz` = creditos.lIdtplCabezaCotiza
WHERE `creditos`.`Estado` = "CURSADA"
AND 1=1
GROUP BY Identificador
HAVING estado_creditos_banco.`Fecha Recepción CCA` = MAX(estado_creditos_banco.`Fecha Recepción CCA`)
LIMIT 0,300
抛出以下错误
[Err] 1054 - 'have clause'中的未知栏'estado_creditos_banco.FechaRecepciónCCA'
请帮助我答案 0 :(得分:4)
改变您的关闭方式:
HAVING FechaRecep = MAX(estado_creditos_banco.Fecha )
所以你的查询应该是这样的:
SELECT creditos.NombreCliente, creditos.Contrato, creditos.Rut,
creditos.lIdtplCabezaCotiza, creditos.FechaPagare, creditos.FechaCurse,
creditos.FechaVcto1, creditos.FechaVcto2, creditos.FormaPago, creditos.EstadoMandato,
REPLACE(CuentaCorriente,',','.') as CuentaCorriente , creditos.Sucursal, creditos.cFyI,
creditos.FechaUltimoPago, estado_creditos_banco.Fecha Activación AS FechaActivacion,
estado_creditos_banco.Detalle de Rechazo AS DetalleRechazo,
MAX(estado_creditos_banco.Fecha) as maxFecha,
estado_activos_banco.Observaciones,
estado_creditos_banco.Estado General AS EstadoActivacion, creditos.EmailCliente,
REPLACE(creditos.TelefonosCliente,',','-') as Telefono,
MAX(estado_creditos_banco.`Fecha Recepción CCA`) as FechaRecep
FROM creditos
LEFT JOIN estado_creditos_banco
ON estado_creditos_banco.Identificador = creditos.lIdtplCabezaCotiza
LEFT JOIN estado_activos_banco
ON estado_activos_banco.# Cotiz = creditos.lIdtplCabezaCotiza
WHERE creditos.Estado = "CURSADA"
AND 1=1 GROUP BY Identificador
HAVING FechaRecep = maxFecha
LIMIT 0,300
答案 1 :(得分:1)
最后我找到了解决方案,重命名变量日期并在句子中更改它。
SELECT
creditos.NombreCliente,
creditos.Contrato,
creditos.Rut,
creditos.lIdtplCabezaCotiza,
creditos.FechaPagare,
creditos.FechaCurse,
creditos.FechaVcto1,
creditos.FechaVcto2,
creditos.FormaPago,
creditos.EstadoMandato,
REPLACE (CuentaCorriente, ',', '.') AS CuentaCorriente,
creditos.Sucursal,
creditos.cFyI,
creditos.FechaUltimoPago,
estado_creditos_banco.`Fecha Activación` AS FechaActivacion,
estado_creditos_banco.`Detalle de Rechazo` AS DetalleRechazo,
MAX(
estado_creditos_banco.`Fecha Recepción CCA`
) as fecha,
estado_activos_banco.Observaciones,
estado_creditos_banco.`Estado General` AS EstadoActivacion,
creditos.EmailCliente,
REPLACE (
creditos.TelefonosCliente,
',',
'-'
) AS Telefono
FROM
creditos
LEFT JOIN estado_creditos_banco ON estado_creditos_banco.Identificador = creditos.lIdtplCabezaCotiza
LEFT JOIN estado_activos_banco ON estado_activos_banco.`# Cotiz` = creditos.lIdtplCabezaCotiza
WHERE
`creditos`.`Estado` = "CURSADA"
AND 1 = 1
GROUP BY
Identificador
HAVING
fecha = MAX(
estado_creditos_banco.`Fecha Recepción CCA`
)
LIMIT 0,
300