我正在使用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,
答案 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。