【发布时间】:2021-06-11 20:03:15
【问题描述】:
我正在尝试删除在序列号中找到的重复项,但前提是在汇总金额账单时取消了重复序列号的金额账单。例如,有五个序列号为“abc-321”,但有五个不同的会费金额($500、$250、$-250、$30、$-30)。四个重复项将是 $250、$-250、$30、$-30,因为将它们加在一起会取消它们或为 0。
我只能想出一个查询来确定重复的序列号是什么,但不知道如何聚合它们以取消它们。
SELECT a.Serial, a.BillAmt, a.Date, a.Code
FROM TableA a
WHERE (a.Serial) in
(SELECT Serial
FROM TableA a
GROUP BY Serial
HAVING COUNT(Serial)>1)
GROUP BY a.Serial, a.BillAmt, a.Date, a.Code
ORDER BY a.Serial ASC;
样本输出:
+--------+---------+----------+------+
|Serial | BillAmt | Date | Code |
+--------+---------+----------+------+
|abc-112 | $240 | 20200720 | MPO |
|abc-112 | -$400 | 20200527 | CPP |
|acc-130 | $300 | 20200515 | CPP |
|acc-130 | $300 | 20200420 | DUB |
|acc-130 | -$300 | 20200515 | CPP |
|bcc-111 | $500 | 20200701 | MPO |
|bcc-111 | -$500 | 20200701 | MPO |
|caa-321 | $700 | 20200805 | DUB |
|caa-321 | $700 | 20200805 | MPO |
+--------+---------+----------+------+
想要的结果:
+--------+---------+----------+------+
|Serial | BillAmt | Date | Code |
+--------+---------+----------+------+
|abc-112 | $240 | 20200720 | MPO |
|abc-112 | -$400 | 20200527 | CPP |
|acc-130 | $300 | 20200420 | DUB |
|caa-321 | $700 | 20200805 | DUB |
|caa-321 | $700 | 20200805 | MPO |
+--------+---------+----------+------+
【问题讨论】:
-
请提供样本数据和期望的结果。如果有超过两行具有相同的绝对值怎么办?
-
请只标记您真正使用的RDBMS。
-
提示:不要重复使用同一个表别名。可能会很混乱。
-
如果有 500 美元、250 美元、-250 美元、250 美元、30 美元、-30 美元、-30 美元怎么办
-
@jarlh - 注意不要使用相同的别名表。谢谢。
标签: duplicates ssms