繁体   English   中英

MYSQL 错误“具有子句”中的未知列

[英]MYSQL error Unknown column in 'having clause'

我需要最后一个日期的最后一条记录,我有以下查询

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 - “具有条款”中的未知列“estado_creditos_banco.Fecha Recepción CCA”

请帮帮我

像这样改变你的接近:
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

最后我找到了解决方案,重命名变量日期并在句子中更改它。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM