从 TXT 中获取数据 SUM GROUP BY 和减法

GET DATA FROM TXT SUM GROUP BY AND SUBTRACT

正在尝试从 txt 文件中获取数据,其中包含如下格式的买卖。 我想按项目分组并相互减去。

我进行了三个查询,例如 totalin、totalout 和 stock,但是当我从 in 中减去 out 时,有些商品丢失了,还没有售出。

这是数据table

+------+---------+--------+
| TYPE |  ITEM   | AMOUNT |
+------+---------+--------+
| BUY  | APPLE   |    100 |
| BUY  | ORANGE  |    100 |
| BUY  | APPLE   |    200 |
| BUY  | ORANGE  |    200 |
| SELL | APPLE   |     50 |
| SELL | APPLE   |     50 |
| SELL | ORANGE  |    100 |
| SELL | ORANGE  |    100 |
| BUY  | COCONUT |     50 |
| SELL | BANANE  |     30 |
+------+---------+--------+

我想要这个输出

+---------+--------+
|  ITEM   | AMOUNT |
+---------+--------+
| APPLE   |    200 |
| BANANE  |    -30 |
| COCONUT |     50 |
| ORANGE  |    100 |
+---------+--------+

我对我想要的结果进行了 3 次查询,但不幸的是我被卡住了。

这是我的查询

查询 1 总计:
SELECT DATA.TYPE, DATA.ITEM, Sum(DATA.AMOUNT) AS TOTALIN FROM DATA GROUP BY DATA.TYPE, DATA.ITEM HAVING (((DATA.TYPE)="BUY"));

查询 2 总计:
SELECT DATA.TYPE, DATA.ITEM, Sum(DATA.AMOUNT) AS TOTALOUT FROM DATA GROUP BY DATA.TYPE, DATA.ITEM HAVING (((DATA.TYPE)="SELL"));

查询 3 个股票:
SELECT DATA.ITEM, [BUY]![TOTAL_IN]-[SELL]![TOTAL_OUT] AS STOK FROM (DATA INNER JOIN BUY ON DATA.ITEM = BUY.ITEM) INNER JOIN SELL ON DATA.ITEM = SELL.ITEM GROUP BY DATA.ITEM, [BUY]![TOTAL_IN]-[SELL]![TOTAL_OUT];

如何进行查询,将其余部分显示为库存。

非常感谢。

您可以将 SELL 视为 -ve,将 BUY 视为 +ve 金额。

则查询变为如下

select item
       ,sum(case when type='BUY' then Amount
                 when type='SELL' then -Amount
             end) as Amount
  from data_table
 group by item

您可以像这样一次性求和:

SELECT ITEM, 
       Sum(iif(data.type = "BUY", AMOUNT, -AMOUNT)) AS Stock
    FROM DATA
    GROUP BY ITEM;

在 Ms Access 中,您可以使用 iif function 和 运行 查询一步应用一个 if 逻辑块,如下所示。

SELECT item,   
SUM(iif ([type] = "SELL", (-1 * Amount), Amount)) as amounts   
FROM data   
GROUP BY item