用于比较多个记录之间的结果并提供结果的Sql查询

用于比较多个记录之间的结果并提供结果的Sql查询,sql,coalesce,aggregates,Sql,Coalesce,Aggregates,我需要编写一个查询,当一个测试失败时,该查询将产生一个“失败”条件。测试结果列在“失败”和“通过”列中。一个制造商的产品可以进行多次测试。我的数据如下: MFG Name | Code | Breaker | Fail | Pass ----------------------------------------- ABC R 2 0 1 ABC R 1 1 0 无论断路器值如何,

我需要编写一个查询,当一个测试失败时,该查询将产生一个“失败”条件。测试结果列在“失败”和“通过”列中。一个制造商的产品可以进行多次测试。我的数据如下:

MFG Name  | Code | Breaker | Fail | Pass
-----------------------------------------
ABC           R      2        0       1
ABC           R      1        1       0
无论断路器值如何,如果一次测试失败,整个批次都会失败。 我想要的结果如下:

  MFG Name  | Code | Result
-------------------------------------------
ABC             R     FAIL
如果您能提供任何帮助或见解,我们将不胜感激。

请尝试:

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

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

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

给你

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

您正在使用什么RDBMS?Sql Server、MySQL、Postgres等等?到底是什么问题?为什么要用
coalesce
标记它?您希望
NULL
值吗?
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