0

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

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