我正在尝试编写一些SQL,以便我可以选择具有相同货币价值和交易日期的可能重复的条目,但这些条目可能会以稍微不同的方式输入发票参考。
我查看了使用“GROUP”和“HAVING”的SQL示例,但我在某处出错了,我的SQL已经处于休眠状态几年了。
这就是我写的。
SELECT amount, apar_id, trans_date
FROM agltransact
WHERE client='AA' AND period=201704 AND apar_id<>0
GROUP BY amount, apar_id, trans_date
HAVING COUNT(*) >1
ORDER BY apar_id,amount
我希望这会返回任何具有相同交易日期(trans_date)和相同供应商ID(apar_id)的重复金额(金额),但实际上它会返回我不理解的数据。这是包含各种供应商,交易日期和金额的更长列表中第一个列出的供应商ID的输出;
Amount Supp ID Tr Date
-4149 10303 30/06/2016
-3459 10303 30/06/2016
115.3 10303 30/06/2016
138.3 10303 30/06/2016
3343.7 10303 30/06/2016
4010.7 10303 30/06/2016
为了在相同的交易日期和供应商ID下检索重复的金额,是否有人能够指出我正确的方向?
答案 0 :(得分:0)
您正在查看包含所有交易信息的表格,您应该只查看存储在asutrans表格中的AP控制线。这是未经测试的,但应该为您提供所需的所有信息,以便在是否出现错误时做出明智的选择。
SELECT voucher_no, ext_inv_ref, description, apar_id, amount, trans_date
FROM asutrans
WHERE (amount, apar_id, trans_date) in
(
SELECT amount, apar_id, trans_date
FROM asutrans
WHERE client='AA' and period=201704
GROUP BY amount, apar_id, trans_date
HAVING count(*) > 1
)
ORDER BY apar_id, amount, trans_date, voucher_no;
答案 1 :(得分:0)
如果你正在寻找asutrans,你还应该包括asuhistr。