Mysql 查看3列并仅提取非空值的SQL查询

Mysql 查看3列并仅提取非空值的SQL查询,mysql,sql,database,Mysql,Sql,Database,我正在寻找一种方法,从带有发票跟踪号的表中提取所有发票。例如: 从shipfile中选择发票、联邦快递、UPS、DHL 将显示所有发票和所有跟踪编号。如果它是由联邦快递发货的,则追踪号码将出现在联邦快递列中。其他的也一样。我希望能够拉出发票,然后是一个其他的“跟踪”列,显示联邦快递、UPS或DHL的结果(其中任何一个都包含跟踪编号)。因此,如果有联邦快递追踪号码,UPS和DHL将为空,因此我想查看发票和联邦快递追踪号码。同样的事情,如果它有UPS跟踪,联邦快递和DHL将是空白的,所以我只想看到U

我正在寻找一种方法,从带有发票跟踪号的表中提取所有发票。例如:

从shipfile中选择发票、联邦快递、UPS、DHL

将显示所有发票和所有跟踪编号。如果它是由联邦快递发货的,则追踪号码将出现在联邦快递列中。其他的也一样。我希望能够拉出发票,然后是一个其他的“跟踪”列,显示联邦快递、UPS或DHL的结果(其中任何一个都包含跟踪编号)。因此,如果有联邦快递追踪号码,UPS和DHL将为空,因此我想查看发票和联邦快递追踪号码。同样的事情,如果它有UPS跟踪,联邦快递和DHL将是空白的,所以我只想看到UPS的结果

之前:

Invoice  FedEx   UPS   DHL


1        F123    

2                U321

3                      D746
之后:

Invoice    Tracking

1          F123

2          U321

3          D746
使用
合并()

假设这些“空白”值实际上是
NULL
,我们可以在这里使用
COALESCE

选择发票、合并(联邦快递、UPS、DHL)作为跟踪
来自shipfile;

如果空白值为空字符串,则使用标量<代码>最大< /代码>函数代替:

选择发票、最大金额(联邦快递、UPS、DHL)作为跟踪
来自shipfile;

非常感谢。在深入研究之后,它只是一个空字符串,所以看起来像是Grest完成了这个任务。再次感谢!
select invoice, coalesce(fedex, ups, dhl) as tracking_number
from shipfile;