Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用子查询的别名获取运行总数?_Sql_Ms Access_Cumulative Sum - Fatal编程技术网

Sql 如何使用子查询的别名获取运行总数?

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

我有一个3个表的并集来计算一些平衡,我需要得到平衡的运行总和,但我不能使用分区覆盖,因为我必须使用一个可以在Access中工作的sql查询。 我的问题是我不能在别名子查询上使用JOIN,它将不起作用

如何在联接中使用alias来获取运行总数

或者任何其他方法来获取不带分区的和,因为它不存在于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

您可以保存一个查询,将其命名为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。目前,我正在计算报告中的总数,但很高兴知道这个答案: