2016-08-11 45 views
0

我需要在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 

我需要一个表,每个车的所有车型和部分。所有型号都在具有分段的两列之一中具有分段。而且,如果在两列中都有一个分段,我是否会喜欢模型的分段来替代该分段,就像保时捷的例子那样。这是我需要的结果:

Make | Model  | Segment 
--------+------------+-------- 
Ferarri | California | Sport 
Ferarri | F40  | Sport  
Porsche | 911  | Sport  
Porsche | Cayenne | SUV 
BMW  | M5   | Sport 

我已经搜索并找到Rank(),但它似乎没有做我想做的事。有什么建议么?

在此先感谢

回答

3

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

select, Make, Model, coalesce(Segmentmodel, Segmentmake) as segment 
from tablename 
0
select coalesce([Segment make], [Segment model]) as Segment 
0

我喜欢电子书籍

select isnull(model,make) as segment 

的东西,因为你总是会选择模式,除非该模型是空的。在这种情况下,它会选择制造。

0

尝试:

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