2012-04-11 3 views
0

私はSSMS 2008 R2を使用しており、2つ以上の値が見つかったすべてのレコードを選択するためにSQL select文を理解しようとしています。2つの可能な値のSQLクエリ?

これは、私が探している4つの可能な値です。これらの値の2つ以上(SubstanceAbuse、BehaviorEmotion、SexualAbuse、DomesticViolence)が満たされている場合は、新しいフィールドを1に設定します。これを行うにはどうすればよいですか?

case when qav.[test_setup_details_caption] in ('Substance Abuse/Drug Use','Caregiver monitor youth for drug alcohol use') then 1 else 0 end SubstanceAbuse, 
    case when qav.[test_setup_details_caption] in ('Physical Aggression','Firesetting','Gang Involvement','Runaway Behavior') then 1 else 0 end BehaviorEmotion, 
    case when qav.[test_setup_details_caption] = 'Problem Sexual Behavior' then 1 else 0 end SexualAbuse, 
    case when qav.[test_setup_details_caption] LIKE '%Domestic%' then 1 else 0 end DomesticViolence, 

答えて

2

私の提案は、上記のステートメントを取って、それを新しいSELECTステートメントの仮想テーブルにすることです。本質的には

SELECT t.* 
FROM (SELECT sub case, Beh case, etc. 
     FROM yourtable) t 
WHERE (t.sub + t.Beh + t.Sex + t.Dom) > 1 
+0

ありがとうBiggsこれはそれでした! – salvationishere

0

あなたが必要とするすべての句WHEREこれであるように思える:もちろん

WHERE SubstanceAbuse + BehaviorEmotion + SexualAbuse + DomesticViolence > 1 
+0

:(彼らはすでに計算されているので)次に、あなたのWHERE文と、ディスプレイにものにSUMを行うことができる唯一の

where (Sub + Beh + Sex + Dom) > 1 

それは、この(擬似コード)のようになりますあなたは正しいダビデです。唯一の問題は、SELECT文の前にWHERE句が計算されるため、これらのcase文がSELECTにある場合、エイリアスがまだ作成されていないため、エイリアスでアクセスできません。だから私の答えで私はFROMステートメントの中に全体のクエリを置くので、あなたが思っていたものに似た何かをすることができたのです。 – IAmTimCorey

0
update myTable set myField = 1 where 2 <= (select SubstanceAbuse + BehaviorEmotion + SexualAbuse + DomesticViolence from ...) 

、これはあなたのクエリのためだけのテンプレートですが、あなたのアイデアを得ます。答えがまだ不明な場合は、私に親切に詳細を教えてください。

お礼、 Lajos Arpad。

関連する問題