【发布时间】:2018-03-10 00:54:21
【问题描述】:
我有 3 个表的 UNION 用于计算一些余额,我需要获得该余额的运行 SUM 但我不能使用 PARTITION OVER,因为我必须使用可以在 Access 中工作。
我的问题是我不能在别名子查询上使用JOIN,它不起作用。
如何在JOIN 中使用别名来获取运行总数?
或任何其他方式获取SUM 不包含PARTITION OVER,因为它在Access 中不存在。
到目前为止,这是我的代码:
SELECT korisnik_id, imePrezime, datum, Dug, Pot, (Dug - Pot) AS Balance
FROM (
SELECT korisnik_id, k.imePrezime, r.datum, SUM(IIF(u.jedinstven = 1, r.cena, k.kvadratura * r.cena)) AS Dug, '0' AS Pot
FROM Racun r
INNER JOIN Usluge u ON r.usluga_id = u.ID
INNER JOIN Korisnik k ON r.korisnik_id = k.ID
WHERE korisnik_id = 1
AND r.zgrada_id = 1
AND r.mesec = 1
AND r.godina = 2017
GROUP BY korisnik_id, k.imePrezime, r.datum
UNION ALL
SELECT korisnik_id, k.imePrezime, rp.datum, SUM(IIF(u.jedinstven = 1, rp.cena, k.kvadratura * rp.cena)) AS Dug, '0' AS Pot
FROM RacunP rp
INNER JOIN Usluge u ON rp.usluga_id = u.ID
INNER JOIN Korisnik k ON rp.korisnik_id = k.ID
WHERE korisnik_id = 1
AND rp.zgrada_id = 1
AND rp.mesec = 1
AND rp.godina = 2017
GROUP BY korisnik_id, k.imePrezime, rp.datum
UNION ALL
SELECT uu.korisnik_id, k.imePrezime, uu.datum, '0' AS Dug, SUM(uu.iznos) AS Pot
FROM UnosUplata uu
INNER JOIN Korisnik k ON uu.korisnik_id = k.ID
WHERE korisnik_id = 1
GROUP BY uu.korisnik_id, k.imePrezime, uu.datum
) AS a
ORDER BY korisnik_id
【问题讨论】:
-
你使用的是
SQL Server还是MS Access? -
你搜索过运行总计、运行余额、运行总和吗?共同话题。最简单的方法是在报表上使用文本框的 RunningSum 属性。
-
我正在使用 MS Access。我已经在水晶报表中使用运行 sum 解决了我的问题,但我没有在 sql 查询中找到如何做到这一点。我已经搜索过了,但是每个查询都会与表本身进行连接。这里我的表有一个别名,我不能加入别名本身
-
查看该查询,然后使用别名。
标签: sql ms-access cumulative-sum