Tsql SQL查询两个可能的值?

Tsql SQL查询两个可能的值?,tsql,flags,sql-server-2008,Tsql,Flags,Sql Server 2008,我正在使用SSMS 2008 R2,并试图找出SQL select语句来选择找到两个或更多值的所有记录 这是我正在寻找的四个可能的值。如果满足这些值中的两个或多个(SubstanceAbuse、Behavior Motion、SexualAbuse、Domestic暴力),我想将一个新字段设置为1。我该怎么做 case when qav.[test_setup_details_caption] in ('Substance Abuse / Drug Use','Caregiver mon

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

这是我正在寻找的四个可能的值。如果满足这些值中的两个或多个(SubstanceAbuse、Behavior Motion、SexualAbuse、Domestic暴力),我想将一个新字段设置为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,

似乎您只需要以下WHERE条款:

WHERE SubstanceAbuse + BehaviorEmotion + SexualAbuse + DomesticViolence > 1

updatemytable set myField=1,其中2我的建议是采用上述语句,并将其作为新SELECT语句中的虚拟表。然后,您可以对WHERE语句中的值进行求和(因为它们已经计算过了),并仅显示

where (Sub + Beh + Sex + Dom) > 1
它看起来像这样(伪代码):


本质上你是对的,大卫。唯一的问题是WHERE子句是在SELECT语句之前计算的,因此如果这些case语句位于SELECT语句中,则您无法通过其别名访问它们,因为别名尚未创建。这就是为什么在我的回答中,我把整个查询放在FROM语句中,这样我可以做一些类似于您所想的事情。
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