2015-10-12 89 views
0

我需要編寫一個查詢,當一個測試失敗時將導致「失敗」條件。測試結果列在失敗和傳遞列中。一個製造商產品可以有許多測試。我的數據是這樣的:Sql查詢比較多個記錄之間的結果並提供結果

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

無論斷路器的值如果一個測試失敗,整個批處理失敗。 我一直在尋找的結果如下:

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

任何幫助或洞察力,你可以給將不勝感激。

+0

您使用的是什麼RDBMS? Sql-Server,MySQL,Postgres,還有別的? – JNevill

+0

究竟是什麼問題?你爲什麼用'coalesce'標記它?你期望'NULL'值嗎? –

回答

2

嘗試:

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

這是假設你要顯示的組合(不作爲「PASS」,無法mfg_namecode對,因爲只有失敗,你會增加having sum(fail) > 0

+0

謝謝@布萊恩!這工作! – joeldub

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; 
0

Joeldub在這裏你去。

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