首页 > 解决方案 > 选择重复的付款和发票

问题描述

几个月前,我们的付款出现了错误。发生的事情是我们的系统以某种方式从工资和发票中重复付款并将它们发送到银行

如果工资重复,则工资在 2 个不同的行中具有相同的 user_salary_id,并且发票支付发生了 2 次不同的 ref_id

总共支付的4个薪水应该只有2个

v_user_ledger_salary查看

user_profile_id user_salary_id 要求的薪水 user_ledger_id
1111 32500 144.00 1
1111 32500 144.00 2
2222 32600 96.00 3
2222 32600 96.00 4
2324 32603 245.00 5
45423 32606 978.49 6
11151 32610 38.65 7
20000 32611 100.12 8

但是发票有不同的参考号,参考号是“邻居”,数量相同,意味着它们也是重复的

v_user_ledger查看

user_profile_id ref_type ref_id 信用
1111 发票支付 999 100.00
1111 发票支付 1000 100.00
2222 发票支付 1049 320.50
2222 发票支付 1050 320.50
2324 发票支付 1051 666.23
45423 发票支付 1052 320.50
11151 发票支付 1053 10.64
20000 发票支付 1538 1392.93

t_invoice 视图

id(与 invoice_id 相同) biller_id(与 user_profile_id 相同)
234534 1111
235000 2222
235010 2324
235020 45423
235033 11151
235444 20000

t_invoice_payment 视图

id(与 ref_id 相同) invoice_id 数量
999 234534 100.00
1049 235000 320.50
1051 235018 666.23
1052 235025 320.50
1053 235043 10.64
1538 235444 1392.93

我需要的是一个查询SELECT * FROM v_user_ledger_salary WHERE rows have same user_salary_id but different user_ledger_id AND user_profile_id in (list)

这应该返回:

user_profile_id user_salary_id 要求的薪水 user_ledger_id
1111 32500 144.00 1
1111 32500 144.00 2
2222 32600 96.00 3
2222 32600 96.00 4

从发票SELECT * FROM v_user_ledger WHERE ref_id IN (SELECT id FROM t_invoice_payment WHERE invoice_id IN(SELECT id FROM t_invoice WHERE biller_id IN (list))) but ref_id needs to have same credit AND "neighbor" of the other ref_id AND user_profile_id IN (list)

这应该返回:

user_profile_id ref_type ref_id 信用
1111 发票支付 999 100.00
1111 发票支付 1000 100.00
1111 发票支付 1049 320.50
1111 发票支付 1050 320.50

我所拥有的是可能有重复工资/发票的 user_profile_id 的列表

使用的表t_invoice_payment , t_invoice

使用的视图v_user_ledgerv_user_ledger_salary

“为什么这是一个公共问题?” 我不知道如何搜索或用哪些词来搜索我的问题的答案,所以如果你知道如何解决这个问题,或者你有一个与这个类似的问题的链接,请将它发送给我

标签: sqlsql-serverphpmyadmin

解决方案


推荐阅读