我有以下语句/查询:
SELECT table1.file_id,
table1.status,
table2.status
FROM table1
INNER JOIN table2 ON table1.file_id = table2.file_id;
结果如下:
FILE ID | Status Table 1 | Status Table 2
-----------------------------------------------------
5500002 | AX | ICS
5500002 | AX | ICSO
5500002 | AXO | ICS
5500003 | AX | ICS
5500003 | AX | ICS
5500003 | AX | ICS
5500004 | NULL | ICSO test
5500004 | AXO | ICS
5500004 | AX | NULL
我需要每个文件 ID 检查四种状态:
- AX
- AXO
- ICS
- ICSO
我现在只想对涵盖所有四种状态的文件 ID
运行选择。如您所见,文件 ID
出现多次,我希望查询仅返回满足要求的文件 ID
,在本例中将返回 5500002和 5500004。
对于 5500004,有一个状态提到 ICSO 测试
,但无论文本的其余部分如何,如果单元格中包含 ICSO,它都会被视为 ICSO。这同样适用于其他状态。
我该如何添加到查询中以仅选择特定 ID?
最佳答案
尝试如下所示
SELECT file_id
FROM
(
SELECT table1.file_id,
table1.status as status1,
table2.status as status2
FROM table1
INNER JOIN table2 ON table1.file_id = table2.file_id
) tab
GROUP BY file_id
HAVING COUNT(DISTINCT tab.status1) + COUNT(DISTINCT tab.status2) >= 4
关于sql - Oracle SQL。如何选择列值指定条件的特定 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30538378/