编写跨表验证查询:检测客户关联发票的子公司一致性问题
数据一致性验证查询:找出同币种发票子公司不一致的客户
需求说明
需要检测客户与其同币种关联发票的子公司是否一致,返回存在不一致情况的客户(例如customerid=1存在同币种发票子公司与自身不一致,应被返回;customerid=2所有同币种发票子公司均匹配,无需返回)。
验证SQL查询
SELECT DISTINCT c.customerid FROM Customertable c JOIN SubsidiaryTable cust_sub ON cust_sub.type = 'customer' AND cust_sub.typeid = c.customerid JOIN Invoicetable i ON i.customerid = c.customerid AND i.currencyid = c.currencyid JOIN SubsidiaryTable inv_sub ON inv_sub.type = 'invoice' AND inv_sub.typeid = i.invoiceid WHERE cust_sub.subsidiaryid != inv_sub.subsidiaryid;
查询逻辑说明
- 关联
Customertable与SubsidiaryTable,获取每个客户对应的子公司ID; - 筛选关联客户的同币种发票(通过
i.currencyid = c.currencyid保证币种一致); - 关联发票与
SubsidiaryTable,获取每张同币种发票对应的子公司ID; - 筛选出客户子公司ID与发票子公司ID不匹配的记录,通过
DISTINCT去重得到存在问题的客户ID。
内容的提问来源于stack exchange,提问作者F.Wigarde
相关产品推荐
相关产品推荐

