2011-09-16 18 views

答えて

68

はい。あなたは、「検索」フォームではなく、あなたは、いくつかの試合から同じ値を返すことができCASE表現

SELECT CASE 
     WHEN c.Number IN ('1121231', '31242323') THEN 1 
     WHEN c.Number IN ('234523', '2342423') THEN 2 
     END AS Test 
FROM tblClient c 
5

の「簡易」形式を使用する必要があります。

SELECT 
    CASE c.Number 
    WHEN '1121231' THEN 1 
    WHEN '31242323' THEN 1 
    WHEN '234523' THEN 2 
    WHEN '2342423' THEN 2 
    END AS Test 
FROM tblClient c 

これはおそらくになりますマーティンズの提案と同じ実行計画なので、あなたがそれをどのように書きたいかの問題です。

+1

問題は、 'in'ステートメントを使用していないので、実際に質問に答えていないことです。 –

+0

@ t-clausen.dk:質問に正確に答えたい場合は、唯一可能な答えは "いいえ"それはあまり建設的ではありません。 – Guffa

+0

答えは "いいえ"ですか?私はいつも 'IN 'で' CASE'ステートメントを書いています...マーティンスミスもそうですね。 –

0

あなたはより多くの数字を持っている場合、またはCASEのための新しいテスト番号を追加する場合、あなたはより柔軟なアプローチを使用することができます代わりにテーブル変数のあなたは、通常のテーブルを使用することができ、また

DECLARE @Numbers TABLE 
(
    Number VARCHAR(50) PRIMARY KEY 
    ,Class TINYINT NOT NULL 
); 
INSERT @Numbers 
VALUES ('1121231',1); 
INSERT @Numbers 
VALUES ('31242323',1); 
INSERT @Numbers 
VALUES ('234523',2); 
INSERT @Numbers 
VALUES ('2342423',2); 

SELECT c.*, n.Class 
FROM tblClient c 
LEFT OUTER JOIN @Numbers n ON c.Number = n.Number; 

を。

関連する問題