使用本地 SQL 从 2 个表中搜索记录会给出双重答案

问题描述 投票:0回答:1

我有一个问题,我尝试用本地 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 语句才能获得所需的结果?

sql local paradox
1个回答
0
投票

您没有提到要从 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;
© www.soinside.com 2019 - 2024. All rights reserved.