access 2007如何离开加入列?

Posted

技术标签:

【中文标题】access 2007如何离开加入列?【英文标题】:how to left join a column in access 2007? 【发布时间】:2015-09-28 12:15:10 【问题描述】:

我在 access 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 ii 等软件中很容易,但我需要在此访问中工作的 sql 代码。

【问题讨论】:

【参考方案1】:

您应该修改您的查询并使 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;

【讨论】:

它说:'Fecha_1.CodCliente = Clientes.ID INNER JOIN CuentasCorrientes ON Clientes.ID = CuentasCorrientes.CodCliente 中缺少运算符'

以上是关于access 2007如何离开加入列?的主要内容,如果未能解决你的问题,请参考以下文章

无法加入备注、OLE 或超链接对象 - Access 2007 - 外部联接

Access 2007 用户自定义函数过加入慢

用于排除列标题从 Access 2007 传输到 Excel 2007 的代码

Access 中的级联字段加入

FindFirst NoMatch 基于 Access 2007 表中的 2 列

ACCESS 2007 - 如何从 VBA 打开选择窗口对话框