首页 > 解决方案 > 比较具有相同值的行(SQL Server 管理工作室)

问题描述

我正在尝试比较一列中具有相同值的行,此外我还需要使用多个 WHEN-THEN-ELSE 条件。

假设我有:

结果_ID 规则
123 0
123 1135
111 0
222 1135
333 1135
333 2040
333 3588
555 1135
555 1135

第一个条件,如果 result_ID=Result_ID 并且 Rule = 0,那么“手动”

第二个条件如果 result_ID=Result_ID 并且 Rule = ONLY 到值 1135,那么“失败”

第三个条件,如果 result_ID=Result_ID 并且 Rule = 1135 或任何其他规则(0 除外),则“通过”

它应该是:

结果_ID 规则 结果
123 0 手动的
123 1135 手动的
111 0 手动的
222 1135 失败的
333 1135 通过
333 2040 通过
333 3588 通过
555 1135 失败的
555 1135 失败的

我有:

SELECT CASE WHEN EXISTS (
            SELECT *
            FROM Table A2
            WHERE A2.Result_ID=A.Result_ID
            AND RULE_ID =0
            ) THEN 'Manual' 
            WHEN EXISTS (
            SELECT *
            FROM Table A2
            WHERE A2.Result_ID=A.Result_ID
            AND RULE_DETAIL_ID =1135
            ) THEN 'Failed' 
            ELSE 'Passed' end as ABC
FROM  ....

但这不是我得到的正确结果。而且加载数据需要时间,也许我可以以某种方式简化这个查询?

谢谢您的帮助。

标签: caseexists

解决方案


推荐阅读