Q:

Query not working as intended, possible syntax error?

I am attempting to see all work orders in the system that have the three specific service codes on those work orders. The query does exactly that however the query shows those work orders that have those three specific service codes but it only shows those three specific service codes. Sometimes there are other service codes on the work order along with the three I want to see. In those instances I need to see the three as well as any other that are also on the work order. But I don't want to see any work orders that do not have those three service codes.
Sometimes there are many other service codes on a work order and none of the three I am interested in so I don't care about these work orders.
Examples of output:
1) Work order 123456 has just a VPROSWP service code on it and the query shows it
2) Work order 234567 has both VPROSWP & DPROSWP service codes on it and the query shows them
3) Work order 345678 has service codes DPROSWP & DREOTLT on it and the query shows only the DPROSWP service code when I need to see both of them
4) Work order 456789 has service code VSVCVVC on it and the query does not show it, which is fine I don't need to see it.
Using Oracle SQL Developer 18.2
Thank you in advance to anyone that can Help.
Here is my Query:
SELECT 
O_A_WOM.ACCOUNT_NUMBER, 
O_A_WOM.WORK_ORDER_NUMBER, 
O_A_WOM.WO_TYPE, 
O_A_WOM.WO_STATUS, 
O_A_WOM.INSTALL_COMPLETION_DATE, 
O_A_WOM.EMPLOYEE_TYPE_CODE, 
O_A_WOM.ASSIGNED_INSTALLER, 
O_E_M.EMPLOYEE_NAME, 
O_E_M.REPORTS_TO, 
O_A_WOD.SERVICE_CODE, 
O_A_WOD.TO_QUANTITY
FROM 
O_A_WOD, 
O_A_WOM, 
O_E_M 
WHERE
O_A_WOD.WORK_ORDER_NUMBER = O_A_WOM.WORK_ORDER_NUMBER 
AND O_A_WOM.ASSIGNED_INSTALLER = O_E_M.EMPLOYEE_NUMBER 
AND O_E_M.SITE_ID = O_A_WOM.SITE_ID 
AND O_E_M.EMPLOYEE_TYPE_CODE = 'H3'
AND O_A_WOM.WO_STATUS IN ('CP') 
AND O_A_WOM.WO_TYPE IN ('SR', 'DW', 'UP')
AND O_E_M.REPORTS_TO in (19232) 
AND O_A_WOM.INSTALL_COMPLETION_DATE BETWEEN 1190420 AND 1190420 
AND O_A_WOD.SERVICE_CODE IN ('VPROSWP', 'TPROSWP', 'DPROSWP') 
ORDER BY O_A_WOM.WORK_ORDER_NUMBER
;

A:

It would help if you explained your tables (as entities) in relation to your problem. We're guessing otherwise.
Guessing though - I'm Assuming O_A_WOM is the Work Order entity and O_A_WOD is the Service Code entity. 
It seems a logic issue and I think you're going to have to replace your condition:
AND O_A_WOD.SERVICE_CODE IN ('VPROSWP', 'TPROSWP', 'DPROSWP') 

... with an exists subquery for each of the necessaary service codes - along the lines of 
AND exists (select 'x' from O_A_WOD sc1 WHERE sc1.WORK_ORDER_NUMBER = O_A_WOM.WORK_ORDER_NUMBER 
            AND sc1.SERVICE_CODE = 'VPROSWP') 
AND exists (select 'x' from O_A_WOD sc2  WHERE sc2.WORK_ORDER_NUMBER = O_A_WOM.WORK_ORDER_NUMBER 
            AND sc2.SERVICE_CODE = 'TPROSWP') 
AND exists (select 'x' from O_A_WOD sc3  WHERE sc3.WORK_ORDER_NUMBER = O_A_WOM.WORK_ORDER_NUMBER 
            AND sc3.SERVICE_CODE = 'DPROSWP') 

This means that only work orders matching all 3 service codes will be selected but all service codes for that order will be displayed. I think that's what you wanted.
If not entirely right (cos I'm having to guess) the solution will  be along these lines.

