access 2007中如何左加入一个列?
how to left join a column in access 2007?
我在 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;
这没问题,
现在我需要从另一个 table 添加所有付款的最大日期。由客户 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" (debts) 开始显示错误的总和(已经尝试使用 Distinct)。
我该怎么做?在像 Qlikview i 这样的软件中很容易,但我需要 sql 代码在这个访问中工作。
您应该修改查询并使 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;
我在 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;
这没问题, 现在我需要从另一个 table 添加所有付款的最大日期。由客户 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" (debts) 开始显示错误的总和(已经尝试使用 Distinct)。
我该怎么做?在像 Qlikview i 这样的软件中很容易,但我需要 sql 代码在这个访问中工作。
您应该修改查询并使 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;