SQL Server中如何校验Table B与Table A对应记录的数量是否匹配
SQL Server 两表字段匹配校验实现方案
实现逻辑
- 以
TableA为左表执行左连接关联TableB,关联条件为唯一标识符S_O相等,确保仅输出TableA中存在的条目,自动过滤仅在TableB中独有的记录 - 通过
CASE语句同时校验ITEM、QTY字段的一致性,生成对应的状态标识
完整查询语句
SELECT A.S_O, A.ITEM, CASE -- 同时满足S_O存在、ITEM一致、QTY一致时标记为OK WHEN B.S_O IS NOT NULL AND A.ITEM = B.ITEM AND A.QTY = B.QTY THEN 'OK' -- 其余情况(S_O不存在、ITEM不匹配、QTY不匹配)均标记为短缺 ELSE 'SHORTAGE' END AS STATUS FROM TableA A LEFT JOIN TableB B ON A.S_O = B.S_O
可选扩展
如果只需要查看匹配异常的记录,可在查询末尾加过滤条件:
WHERE CASE WHEN B.S_O IS NOT NULL AND A.ITEM = B.ITEM AND A.QTY = B.QTY THEN 'OK' ELSE 'SHORTAGE' END != 'OK'
效果说明
针对示例数据:
- TableA中S_O为1、3、4、6的记录,若对应
TableB中三个字段完全匹配,输出STATUS为OK;若任意字段不匹配或TableB无对应S_O记录,输出STATUS为SHORTAGE - TableB中独有的S_O为7、8的记录不会出现在最终结果中,符合需求
内容的提问来源于stack exchange,提问作者Miguel V
相关产品推荐
相关产品推荐

