我一直试图解决这个问题很长一段时间,似乎无法得到它。我有两个表,只有当表2中的所有列都符合条件时才需要从表1中选择DISTINCT。这是表格的外观:
Table 1
ACR OCD
sea 123
sea 456
sfo 678
sfo 890
Table 2
OCD SWITCH
123 Y
456 N
678 Y
890 Y
我正在尝试编写一个select语句,只有当表1中属于该ACR的所有OCD的所有开关都设置为Y时才返回Table1.ACR。因此,使用此数据示例它将返回sfo,因为OCD 678和890都在表2中设置为Y.
我试过了:
SELECT t1.acr
FROM table1 t1
WHERE t1.ocd NOT IN (SELECT DISTINCT t1.ocd
FROM table1 t1
JOIN table2 t2 ON t1.ocd=t2.ocd
WHERE t2.swtich = 'Y');
返回:
sea
sfo
sfo
答案 0 :(得分:1)
试试这个:
SELECT t1.acr
FROM table1 t1
LEFT JOIN table2 t2 on t2.ocd = t1.ocd AND t2.switch = 'Y'
GROUP BY t1.acr
HAVING COUNT(t2.ocd) = COUNT(t1.ocd)