0

我需要编写一个查询,当一个测试失败时会导致“失败”条件。测试结果列在“失败”和“通过”列中。一种制造商的产品可以进行多次测试。我的数据是这样的:

MFG Name  | Code | Breaker | Fail | Pass
-----------------------------------------
ABC           R      2        0       1
ABC           R      1        1       0

如果一个测试失败,无论 Breaker 值如何,整个批次都会失败。我正在寻找的结果如下:

  MFG Name  | Code | Result
-------------------------------------------
ABC             R     FAIL

您可以提供的任何帮助或见解将不胜感激。

4

3 回答 3

2

尝试:

select      mfg_name,
            code,
            case when sum(fail) > 0 then 'FAIL' else 'PASS' end as result
from        tbl
group by    mfg_name,
            code

这假设您想要显示 (mfg_namecode没有失败的对的组合作为“通过”,因为只有失败你会添加having sum(fail) > 0)

于 2015-10-12T15:14:37.350 回答
0

这是一个聚合查询。假设fail只取两个值(0 和 1):

select MFGName, Code,
       (case when max(fail) = 1 then 'FAIL' else 'PASS' end) as Result
from tests
group by MFGName, Code;
于 2015-10-12T15:14:57.667 回答
0

乔杜布给你。

DECLARE @isFail AS INT

@isFail = (SELECT COUNT(FAIL) FROM FIRSTTABLE WHERE MFG NAME = 'ABC' AND FAIL = 1)

IF @isFail > 0
     BEGIN
        INSERT INTO SECONTABLE(with breaker) (Result) VALUES ('FAIL') WHERE WHERE MFG Name = 'ABC'
        ---- OR IF RECORD EXISTS
        UPDATE SECONDTABLE(with breaker) Result = 'FAIL' WHERE MFG Name = 'ABC'
     END
ELSE
     BEGIN
        INSERT INTO SECONTABLE(with breaker) (Result) VALUES ('PASS') WHERE WHERE MFG Name = 'ABC'
        ---- OR IF RECORD EXISTS
        UPDATE SECONDTABLE(with breaker) Result = 'PASS' WHERE MFG Name = 'ABC'
     END
于 2015-10-12T15:21:13.620 回答