2016-08-11 15 views
0

SQL Serverで2つの列を結合する必要があります。しかし、私は1つの列を優先する必要があります。優先度に基づいて2つの列から選択

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 

すべてのモデルと各車のセグメントでテーブルが必要です。すべてのモデルはセグメントを持つ2つの列のいずれかにセグメントを持っています。また、両方の列にセグメントがある場合は、ポルシェの例のように、モデルのセグメントをmakeのセグメントを上書きすることができますか?これは私が必要とする結果です:

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

私はRank()を検索して見つけましたが、私の望むことをしていないようです。助言がありますか?事前に

おかげ

答えて

3

使用coalesce()。それは最初の非NULLパラメータです返します

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 

のようなものをrecommentと思います。その場合、makeを選択します。

0

試してみてください。

Select Make,Model,Coalesce([Segment model], [Segment make]) Segment From YourTable 
関連する問題