SQL查询两个可能的值?

时间:2012-04-11 15:28:08

标签: tsql flags sql-server-2008

我正在使用SSMS 2008 R2并且正在尝试找出SQL select语句来选择找到两个或更多值的所有记录。

这些是我正在寻找的四个可能值。如果满足这些值中的两个或更多(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,

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

看起来你只需要这个WHERE子句:

WHERE SubstanceAbuse + BehaviorEmotion + SexualAbuse + DomesticViolence > 1

答案 2 :(得分:0)

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

当然,这只是您查询的模板,但您明白了。如果答案仍然不清楚,那么请您提供更多详细信息。

祝你好运, Lajos Arpad。