用于比较多个记录之间的结果并提供结果的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