2016-06-24 12 views
2

私は以下の表を処理するために、CASEステートメントを構築しようとしています。CASE文

サービス1がNULLの場合、私はそれを交換するサービス2の値をしたいと思います。サービス1とサービス2がNULLの場合、私は... Service3の値が等...など、それを交換したいと思います

私は彼らのテーブルをできるように圧縮されるように、各フィールドに、このアクションを繰り返したいと思います。

値はサービス2からサービス1へと移動だけでなく、サービス2に残ったとして、私は、CASEステートメントを構築するために管理が、私は、重複する値を持っていました。私は、同じ値が列に残っているので、NULL値に基づいてシフトするすべての値を必要とするが、列にわたってできる限り圧縮され、彼らはあります。

enter image description here

+0

のMicrosoft SQL Server Management Studioを – hansolo

答えて

3

COALESCEあなたが探しているまさにです:あなたはより多くを持っている場合

COALESCE(Service1, Service2) 

CASE WHEN Service1 IS NOT NULL THEN Service1 
    ELSE Service2 
END 

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

COALESCEは、このようなCASE発現させるために非常に便利な短いです2つの引数よりも、COALESCEは本当に便利です。

これは、他のnull関連caseた略語をチェックアウトも価値がある:

+0

マルクス - 合体は便利ですが、それはまだの世話をしていません重複した問題。 を[画像](https://drive.google.com/file/d/0B8yOL-7gwR6jWUlNZ2l4RzZWMjg/view?usp=sharing):こちらをご覧ください! – hansolo