SELECT 'EMPLOYEE TABLE' TABLE ,
CASE WHEN ROLL_NO IN 'MISSING' THEN 'FAIL' ELSE 'PASS' END AS STATUS
FROM EMPLOYEE_TABLE;
EMPLOYEE_TABLE表:
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
预期输出(只有一行,通过'通过'或'失败')
TABLE STATUS
----------------------------
EMPLOYEE TABLE FAIL
如果缺少任何一条记录,那么我希望整体状态为“FAIL'否则我应该通过' PASS'。
答案 0 :(得分: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
将按字母顺序排序状态列的结果。由于您只返回失败或通过,因此只要给定员工表的记录失败,它就会显示失败。如果没有失败则会显示通过。
我按员工表分组,但我不清楚它代表什么 - 可能需要更改。
答案 1 :(得分:2)
你走了:
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;