0

私は SSMS 2008 R2 を使用しており、2 つ以上の値が見つかったすべてのレコードを選択する SQL 選択ステートメントを見つけようとしています。

これらは、私が探している 4 つの可能な値です。これらの値 (SubstanceAbuse、BehaviorEmotion、SexualAbuse、DomesticViolence) の 2 つ以上が満たされた場合、新しいフィールドを 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,
4

3 に答える 3

2

私の提案は、上記のステートメントを使用して、新しい SELECT ステートメントで仮想テーブルにすることです。次に、WHEREステートメントで(すでに計算されているため)ものに対してSUMを実行し、表示のみを行うことができます

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

次のようになります (疑似コード):

SELECT t.*
FROM (SELECT sub case, Beh case, etc.
      FROM yourtable) t
WHERE (t.sub + t.Beh + t.Sex + t.Dom) > 1
于 2012-04-11T15:37:21.157 に答える
0

必要なのはこの WHERE 句だけのようです。

WHERE SubstanceAbuse + BehaviorEmotion + SexualAbuse + DomesticViolence > 1
于 2012-04-11T15:33:03.777 に答える
0
update myTable set myField = 1 where 2 <= (select SubstanceAbuse + BehaviorEmotion + SexualAbuse + DomesticViolence from ...)

もちろん、これはクエリのテンプレートにすぎませんが、アイデアは理解できます。回答がまだ不明な場合は、詳細をお知らせください。

よろしく、ラホス・アルパッド。

于 2012-04-11T15:37:03.980 に答える