これを簡単にしましょう。case statement logic
私はテーブルを持っています。
visitID studentname dob roll.no value displIndex propID
200019 rob 05/18/1937 101 smoking 2 83
200019 rob 05/18/1937 101 2 91
200019 rob 05/18/1937 101 alcohol 1 83
200019 rob 05/18/1937 101 1 91
200020 henry 08/20/1987 102 smoking 2 83
200020 henry 08/20/1987 102 2 91
200021 king 09/21/1982 103 alcohol 1 83
200021 king 09/21/1982 103 1 91
私は似たような種類の表を持っています。
今私がしようとしているのは、その特定のvisitID
の学生の表示インデックスが1つもない場合、case文では'779'
の値を返します。
select visitID,studentname
,dob
,roll.no
,value
,dispIndex
,propID
,case
WHEN (PATINDEX('%smoking%',value) >0 OR
(PATINDEX('%sometimes smoking%',value) > 0) THEN
'777'
WHEN (PATINDEX(%not smoking%,value) >0 OR
(PATINDEX(%do not smoke%,value) >0_ THEN
'778'
WHEN (ISNULL(CAST(value as varchar(max)),'')='') THEN
'779'
ELSE
'779'
END VALUE
ここにキングは喫煙中の記録を持っていません。だから私はそれを779バケツに入れて欲しい。私はそれをどのように行うことができますか?
習慣がフリーテキストの場合、[データ変更の異常](http://en.wikipedia.org/wiki/Database_normalization#Free_the_database_of_modification_anomalies)があります。あなたが望むものはどちらかとは分からない。初心者のためにフィールド間のフィールドの関係を見ることができません – gbn
また、いくつかのサンプル出力は良いです。また、**あなたのサンプルクエリでキーワードを間違って入力すると、あなた自身の努力で多くの注意を払うことはありません!** – JNK
's.value'とは何ですか?また、' CASE '声明? – Lamak