Question edited
#TEMP_TABLE data: | Serial Number | ORIG | DEST | | ------------- | ---- | ---- | | 12345 | CAN | YOW | | 67890 | YYZ | PEK | | 13579 | PEK | YVR | | 24680 | PVG | YOW | | 15764 | YVR | XIY | | 24863 | CTU | PVG |
I was able to get my expected results by:
SELECT * FROM #TEMP_TABLE
WHERE
(ORIG IN ('PEK','PVG') AND LEFT(DEST,1)<>'Y')
OR
(ORIG NOT IN ('PEK','PVG') AND LEFT(ORIG,1)<>'Y')
OR
(ORIG NOT IN ('PEK','PVG') AND LEFT(ORIG,1)='Y' AND DEST NOT IN ('PEK','PVG'));
Expected results: | Serial Number | ORIG | DEST | | ------------- | ---- | ---- | | 12345 | CAN | YOW | | 15764 | YVR | XIY | | 24863 | CTU | PVG |
Looking to a different way to achieve the same results by using nested query:
SELECT * FROM #TEMP_TABLE
WHERE
(ORIG IN ('PEK','PVG') AND LEFT(DEST,1)<>'Y')
OR
(ORIG NOT IN ('PEK','PVG') AND DEST IN
(SELECT DEST FROM #TEMP_TABLE
WHERE LEFT(ORIG,1)='Y' AND DEST NOT IN ('PEK','PVG'))
);
But it gives me a different result: | Serial Number | ORIG | DEST | | ------------- | ---- | ---- | | 15764 | YVR | XIY |