sql - 选择重复的付款和发票
问题描述
几个月前,我们的付款出现了错误。发生的事情是我们的系统以某种方式从工资和发票中重复付款并将它们发送到银行
如果工资重复,则工资在 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_ledger,v_user_ledger_salary
“为什么这是一个公共问题?” 我不知道如何搜索或用哪些词来搜索我的问题的答案,所以如果你知道如何解决这个问题,或者你有一个与这个类似的问题的链接,请将它发送给我
解决方案
推荐阅读
- sql - SQL:子查询 AVG 和计数的问题
- java - 使用 restoreMultiLayerNetwork() 加载 DL4J 模型时,“类加载器命名空间”无法访问库
- java - 在命令行启动 H2 数据库服务器时,用户定义的类在 CLASSPATH 中可用
- haskell - 如何将我的自定义 monad 的定义基于其在 Haskell 中的函子定义
- d3.js - D3折线图显示正负数
- dji-sdk - DJI Matrices 100 - Mission Planner “平视显示器 (HUD)” 在 UI 中不显示任何值?
- r - 如何将其他行绑定到数据框以获取列总计?
- android - 键盘正在推动离子 android 中的标签
- android - 定期工作请求和位置更新的工作管理器问题
- php - 在 WooCommerce 产品中显示“相关类别”的链接