2016-08-11 2 views
0

Ich muss zwei Spalten in SQL Server kombinieren. Ich muss jedoch eine Spalte Priorität geben.Wählen Sie aus zwei Spalten basierend auf Priorität

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 

Ich brauche eine Tabelle mit allen Modellen und dem Segment jedes Autos. Alle Modelle haben das Segment in einer der beiden Spalten mit Segment. Und wenn es in beiden Spalten ein Segment gibt, möchte ich, dass das Segment für das Modell das Segment für die Marke überschreibt, wie im Beispiel mit dem Porsche. Dies ist das Ergebnis, das ich brauche:

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

Ich habe gesucht und gefunden Rank(), aber es scheint nicht zu tun, was ich will. Irgendwelche Vorschläge?

Vielen Dank im Voraus

Antwort

3

Verwendung coalesce(). Sie gibt es erste Nicht-NULL-Parameter ist:

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

ich so etwas wie

select isnull(model,make) as segment 

recomment würde Denn dann werden Sie immer das Modell wählen, es sei denn das Modell ist leer. In diesem Fall wird die Marke ausgewählt.

0

Versuchen:

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