如何从Shipfile表中提取发票及对应唯一非空快递追踪号
解决方案:合并多列非空追踪号到单一列
这问题很常见,用标准SQL里的COALESCE()函数就能完美解决——它会依次检查传入的列/值,返回第一个非空的结果,刚好匹配你的需求:每条记录里只有一个快递商列有有效追踪号,其余为空,这个函数能精准提取到那个值。
直接用这条查询语句即可:
SELECT Invoice, COALESCE(FedEx, UPS, DHL) AS Tracking FROM shipfile;
效果验证
我们用你给出的示例数据来测试:
转换前的原始数据:
Invoice FedEx UPS DHL 1 F123 2 U321 3 D746
执行上述SQL后,得到的结果完全符合你的预期:
转换后的目标结果:
Invoice Tracking 1 F123 2 U321 3 D746
补充说明
COALESCE()是标准SQL函数,几乎所有主流数据库(MySQL、PostgreSQL、SQL Server等)都支持,兼容性拉满。如果遇到小众数据库,也可以找对应替代函数,但COALESCE()肯定是最通用的选择。
内容的提问来源于stack exchange,提问作者mf1124
相关产品推荐
相关产品推荐

