如何在SQL Server中从两张表分两行检索匹配数据?
在SQL Server中实现分两行展示匹配表数据
可以用UNION ALL结合排序字段完成这个需求,单条SQL语句如下:
SELECT itm_id, itm_desc, accountNumber, branchName, NULL AS itm_new_desc, NULL AS newaccountnumber, NULL AS qty, 1 AS sort_order FROM TableA UNION ALL SELECT itm_id, NULL AS itm_desc, NULL AS accountNumber, NULL AS branchName, itm_new_desc, newaccountnumber, qty, 2 AS sort_order FROM TableB ORDER BY itm_id, sort_order;
关键说明:
UNION ALL用来合并两个数据集,保留所有行(无需去重)- 第一个查询返回
TableA的完整数据,TableB对应列设为NULL,标记sort_order=1确保该行排在对应itm_id的前面 - 第二个查询返回
TableB的完整数据,TableA对应列设为NULL,标记sort_order=2排在后面 - 最终按
itm_id分组、sort_order排序,保证输出顺序符合要求 - 若出现类型不匹配报错,可显式转换NULL的类型,比如
CAST(NULL AS VARCHAR(20)) AS itm_desc,根据实际字段类型调整
执行后输出结果将与你期望的格式一致(NULL在客户端会显示为空值)。
内容的提问来源于stack exchange,提问作者Arul
相关产品推荐
相关产品推荐

