如何在访问2007中离开加入列?

时间:2015-09-28 12:15:10

标签: sql join ms-access-2007 left-join

我在访问2007中有这个查询:

    SELECT Clientes.ID, Clientes.Nombre, Sum(CuentasCorrientes.Debe-CuentasCorrientes.Haber) AS Deuda
FROM Clientes INNER JOIN CuentasCorrientes ON Clientes.ID = CuentasCorrientes.CodCliente
GROUP BY Clientes.ID, Clientes.Nombre, 
HAVING (((Sum([CuentasCorrientes].[Debe]-[CuentasCorrientes].[Haber]))>0))
ORDER BY Clientes.Nombre;

这没关系, 现在我需要从另一个包含所有付款的表中添加最大日期。由客户ID链接。 像这样:

SELECT Clientes.ID, Clientes.Nombre, Sum(CuentasCorrientes.Debe-CuentasCorrientes.Haber) AS Deuda, Max(Fecha_1.Fecha) AS UltimoPago
FROM CuentasCorrientes AS Fecha_1 INNER JOIN (Clientes INNER JOIN CuentasCorrientes ON Clientes.ID = CuentasCorrientes.CodCliente) ON Fecha_1.CodCliente = Clientes.ID
WHERE (((Fecha_1.TipoPago)<>''))
GROUP BY Clientes.ID, Clientes.Nombre
HAVING (((Sum([CuentasCorrientes].[Debe]-[CuentasCorrientes].[Haber]))>0))
ORDER BY Clientes.Nombre;

但是当我添加这个日期“UltimoPago”时,日期还可以!但是“deudas”(债务)字段开始显示错误总和(已经尝试使用Distinct)。

我该怎么做?在像Qlikview这样的软件中,我很容易,但我需要在此访问中使用sql代码。

1 个答案:

答案 0 :(得分:0)

你应该修改你的查询并使JOINS更好

SELECT Clientes.ID, 
Clientes.Nombre, 
Sum(CuentasCorrientes.Debe-CuentasCorrientes.Haber) AS Deuda, 
Max(Fecha_1.Fecha) AS UltimoPago
FROM CuentasCorrientes AS Fecha_1 
INNER JOIN Clientes ON Fecha_1.CodCliente = Clientes.ID
INNER JOIN CuentasCorrientes ON Clientes.ID = CuentasCorrientes.CodCliente 
WHERE Fecha_1.TipoPago <> ''
GROUP BY Clientes.ID, Clientes.Nombre
HAVING Sum([CuentasCorrientes].[Debe] - [CuentasCorrientes].[Haber] > 0) 
ORDER BY Clientes.Nombre;