2016-06-24 15 views
2

Ich versuche, eine CASE-Anweisung zu erstellen, um die folgende Tabelle zu behandeln.CASE-Anweisung, Nullwerte in kaskadierenden Feldern zu entfernen

Wenn Service1 NULL ist, möchte ich den Wert in Service2 ersetzen. Wenn Service1 und Service2 NULL sind, möchte ich den Wert in Service3 ersetzen ... etc ...

Ich möchte diese Aktion für jedes Feld wiederholen, damit die Tabelle so komprimiert wie möglich ist.

Ich schaffte es, eine CASE-Anweisung zu erstellen, aber ich hatte doppelte Werte, als der Wert von Service2 zu Service1 wechselte, aber auch in Service2 blieb. Ich brauche alle Werte, um basierend auf NULL-Werten zu verschieben, so dass die gleichen Werte in der Zeile verbleiben, aber sie sind so komprimiert wie möglich über die Spalten.

enter image description here

+0

Microsoft SQL Server Management Studio – hansolo

Antwort

3

COALESCE ist genau das, was Sie suchen:

SELECT COALESCE(Service1, Service2, Service3, Service4, Service5, Service6) 
    FROM ... 

COALESCE ist ein sehr handliches kurz für einen CASE Ausdruck wie folgt aus:

COALESCE(Service1, Service2) 

CASE WHEN Service1 IS NOT NULL THEN Service1 
    ELSE Service2 
END 

Wenn Sie mehr als zwei Argumente, COALESCE ist wirklich praktisch.

Es lohnt sich auch die anderen null Zusammenhang case Abkürzungen Check-out:

+0

Markus - Coalesce ist hilfreich, aber es braucht noch nicht um die doppeltes Problem Siehe hier: ! [Bild] (https://drive.google.com/file/d/0B8yOL-7gwR6jWUlNZ2l4RzZWMjg/view?usp=sharing) – hansolo

Verwandte Themen