我有一个问题,我尝试用本地 SQL 解决,但找不到任何解决方案。有人可以给我提示吗?
我有 2 个 Paradox 表 Art.DB 和 Bet.DB
Art
有 4 列:
Datum, Object, Nr, Summa
Datum Object Nr Summa
------------------------------------
2023-01-01 Tools 100 5000
2023-01-01 Bags 100 1000
2023-02-01 Tyres 101 4000
2023-03-01 Cart 102 5700
Bet
有 3 列:
Nr, Type, Summa
Nr Type Summa
---------------------
100 Card 5000
100 Cash 1000
101 Card 4000
102 Cash 5700
我要汇总销售收据,是Nr
我使用的SQL是
SELECT
a.Nr, SUM(Summa) AS Summa
FROM
Art AS a, Bet AS b
WHERE
a.Nr = b.Nr
GROUP BY
a.nr
ORDER BY
Nr
我的问题是我得到双倍 Summa,因为 2 次付款使用不同的方法,Nr = 100
Nr Summa
-----------
100 12000
101 4000
102 5700
我期望 Nr 100 的总和为 6000,而不是 12000。我明白为什么会得到这个结果,但是我应该如何编写 SQL 语句才能获得所需的结果?
您没有提到要从 Art 或 Bet 中选取哪一个摘要栏。根据您的需要更改金额
这是代码
-- Calculate sum for each unique 'Nr' by joining 'Art' and 'Bet' tables
SELECT
a.Nr,
COALESCE(SUM(b.Summa), 0) AS TotalSum
FROM
-- Subquery retrieves distinct 'Nr' values from 'Art'
(SELECT DISTINCT Nr FROM Art) AS a
LEFT JOIN
Bet AS b ON a.Nr = b.Nr
GROUP BY
a.Nr
ORDER BY
a.Nr;