Sql 如何使用子查询的别名获取运行总数?
我有一个3个表的并集来计算一些平衡,我需要得到平衡的运行总和,但我不能使用分区覆盖,因为我必须使用一个可以在Access中工作的sql查询。 我的问题是我不能在别名子查询上使用JOIN,它将不起作用 如何在联接中使用alias来获取运行总数 或者任何其他方法来获取不带分区的和,因为它不存在于Access中。 这是我目前的代码:Sql 如何使用子查询的别名获取运行总数?,sql,ms-access,cumulative-sum,Sql,Ms Access,Cumulative Sum,我有一个3个表的并集来计算一些平衡,我需要得到平衡的运行总和,但我不能使用分区覆盖,因为我必须使用一个可以在Access中工作的sql查询。 我的问题是我不能在别名子查询上使用JOIN,它将不起作用 如何在联接中使用alias来获取运行总数 或者任何其他方法来获取不带分区的和,因为它不存在于Access中。 这是我目前的代码: SELECT korisnik_id, imePrezime, datum, Dug, Pot, (Dug - Pot) AS Balance FROM ( SE
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
您可以保存一个查询,将其命名为3个表的并集的Query1,然后创建另一个查询,返回第一个查询中的每一行,并计算前面的行的总和(可选地检查它们是否在同一组中) 应该是这样的:
SELECT *, (
SELECT SUM(Value) FROM Query1 AS b
WHERE b.GroupNumber=a.GroupNumber
AND b.Position<=a.Position
) AS RunningSum
FROM Query1 AS a
但是,在报告中这样做更有效。您使用的是SQL Server还是MS Access?您是否搜索过运行总计、运行余额和运行总和?共同话题。最简单的方法是在报表上使用textbox的RunningSum属性。我使用的是MS Access。我在crystal report中使用运行sum解决了我的问题,但在sql查询中找不到如何执行该操作。我已经搜索过了,但是每个查询都与表本身进行连接。这里我的表有一个别名,我不能在别名上加入它自己在该查询上创建一个视图,然后在该查询上使用别名。谢谢。我不知道保存和使用查询是否有效,因为我使用的是C和OleDb。目前,我正在计算报告中的总数,但很高兴知道这个答案: