2017-01-04 6 views
0

を設定し、この結果とセット、のは、私はSQL Server 2008で「顧客」と呼ばれるテーブルがあるとしましょう:を選択し、SQL Serverの結果に列の値を変換するには、

select * from customer 

cu_id cu_status 
1  O 
2  C 
3  O 

「cu_status」カラムにコードと私です'O'は 'Open'、 'C​​'は 'Closed'です。したがって、私の希望する結果セットは次のようになります:

cu_id cu_status 
1  Open 
2  Closed 
3  Open 

SELECTコマンドでのみ実行する方法はありますか?

ありがとうございます!

+1

を答えが示すようにはい、それは、行うことができます。しかし、出力の書式設定**(日付と通貨の書式設定だけでなく、この種類の変換など)は、SQLではなくUIレイヤーで行う必要があります。 – Heinzi

+1

2つ以上の値がある場合は、ルックアップテーブルの使用を検討することができます。これらの2つの値だけがある場合は、代わりにビットデータ型の使用を検討する必要があります。 IsOpenのようなもの。 –

+0

@SeanLange実際には単なる例ですが、私はいくつかの値を持っていますが、データベース内ではなく複数層のアプリケーション内のアプリケーションサーバーの中にあり、DBにビューを作成するように要求されました。私は間違ったアプローチを知っていますが、今は変更するには遅すぎます; – delphirules

答えて

3

これを行うにはいくつかの方法があります。はい、あなたが次の操作を行うことができます

SELECT cu_id, 
     CASE cu_Status 
      WHEN 'O' THEN 'Open' 
      WHEN 'C' THEN 'Closed' 
     END cu_status 
FROM dbo.customer; 
+0

ありがとう、これは、CASEと "AS"ステートメントを使用して列を選択する方法はありますか? 'のようにcu_statusを「ステータス」として選択します。 – delphirules

+1

?の場合、 'END cu_status'を' END SomeAliasHere'に置き換えてください – Lamak

1

::シンプルな1はCASE式を使用することになり

SELECT CU_ID, 
    CASE WHEN CU_STATUS = 'O' THEN 
     'Open' 
    ELSE 
     'Closed' 
    END AS CU_STATUS 
FROM CUSTOMER 
関連する問題