Sql 根据优先级从两列中选择

Sql 根据优先级从两列中选择,sql,sql-server,select,Sql,Sql Server,Select,我需要合并SQL Server中的两列。但是,我需要给一列优先级 Make | Model | Segment make | Segment model --------+------------+--------------+-------------- Ferarri | California | Sport | Null Ferarri | F40 | Sport | Null Porsche | 911 | Sp

我需要合并SQL Server中的两列。但是,我需要给一列优先级

Make    | Model      | Segment make | Segment model
--------+------------+--------------+--------------
Ferarri | California | Sport        | Null 
Ferarri | F40        | Sport        | Null 
Porsche | 911        | Sport        | Null 
Porsche | Cayenne    | Sport        | SUV
BMW     | M5         | Null         | Sport 
我需要一张桌子,上面有所有车型和每辆车的部分。所有模型的线段都位于带有线段的两列中的一列中。而且,如果两列中都有一个段,我是否希望模型的段替代品牌的段,如Porsche的示例所示。这就是我需要的结果:

Make    | Model      | Segment  
--------+------------+--------
Ferarri | California | Sport   
Ferarri | F40        | Sport     
Porsche | 911        | Sport    
Porsche | Cayenne    | SUV
BMW     | M5         | Sport 
我已经搜索并找到了Rank(),但它似乎没有达到我想要的效果。有什么建议吗

提前感谢

使用
coalesce()
。它返回它的第一个非空参数:

select, Make, Model, coalesce(Segmentmodel, Segmentmake) as segment
from tablename
使用
coalesce()
。它返回它的第一个非空参数:

select, Make, Model, coalesce(Segmentmodel, Segmentmake) as segment
from tablename

我会推荐类似的东西

select isnull(model,make) as segment

因为这样您将始终选择模型,除非模型为空。在这种情况下,它将选择make。

我将重新编译如下内容

select isnull(model,make) as segment
因为这样您将始终选择模型,除非模型为空。在这种情况下,它将选择品牌。

尝试:

Select Make,Model,Coalesce([Segment model], [Segment make])  Segment From YourTable
试试看:

Select Make,Model,Coalesce([Segment model], [Segment make])  Segment From YourTable