2016-12-14 6 views
1
SELECT 'EMPLOYEE TABLE' TABLE , 
    CASE WHEN ROLL_NO IN 'MISSING' THEN 'FAIL' ELSE 'PASS' END AS STATUS 
FROM EMPLOYEE_TABLE; 

EMPLOYEE_TABLE表:1つのレコードがなくてもSQLの全体的なステータスを取得する方法は?

employee roll_no 
--------------------- 
    A   E 
    B   F 
    C   MISSING 
    D   MISSING 

出力:

TABLE    STATUS 
---------------------------- 
EMPLOYEE TABLE  FAIL 
EMPLOYEE TABLE  FAIL 
EMPLOYEE TABLE  PASS 
EMPLOYEE TABLE  PASS 

予想出力( 'PASS' 又は 'FAIL' のいずれかでのみ1行する)

TABLE    STATUS 
---------------------------- 
EMPLOYEE TABLE  FAIL 

場合いずれかのレコードが欠落している場合は、全体的なステータスを「FAIL」にするか、「PASS」を取得する必要があります。

答えて

2

あなたが行く:これは、Oracle

SELECT 'EMPLOYEE TABLE' TABLE, 
CASE WHEN EXISTS(SELECT * from EMPLOYEE_TABLE WHERE roll_no IN ('MISSING')) 
THEN 'FAIL' ELSE 'PASS' END AS STATUS 
FROM DUAL; 
+0

です。 'FROM DUAL'を追加してください。 –

+0

アイデアが良いです。これをスピードアップするには、この '存在するときはいつでも(SELECT * FROM EMPLOYEE_TABLE WHERE roll_no IN( 'MISSING'))とします。 –

4
SELECT 
    'EMPLOYEE TABLE' TABLE, 
    MIN(CASE WHEN ROLL_NO IN 'MISSING' THEN 'FAIL' ELSE 'PASS' END) AS STATUS 
FROM EMPLOYEE_TABLE 
GROUP BY 'EMPLOYEE TABLE'; 

MINステータス列の結果をアルファベット順に並べます。特定の従業員テーブルのレコードにエラーが発生するとすぐに失敗または合格を返すだけなので、失敗と表示されます。もし失敗しなければ、合格を示すでしょう。

私は従業員テーブルでグループ化しましたが、それが何を表しているかはわかりません。変更する必要があるかもしれません。ここで

関連する問題