Hi so this question has been asked before, but I am not only just trying to extract the records that do not just exist in the first table, but also the mapping from the first table where they don’t?
Eg.
Assuming I will join using Month and Year–
Table 1:
Month | Year |
---|---|
3 | 2021 |
4 | 2021 |
5 | 2021 |
6 | 2023 |
Table 2:
ID | Month | Year |
---|---|---|
11 | 3 | 2021 |
22 | 4 | 2021 |
33 | 5 | 2021 |
Output:
ID | Month | Year |
---|---|---|
11 | 6 | 2023 |
22 | 6 | 2023 |
33 | 6 | 2023 |
Advertisement
Answer
From what you say and show, you want to cross join all table 2 rows to the table 1 rows that don’t have a match in table 2. For the lookup you can use NOT EXISTS
.
select t2.id, t1.month, t1.year from t1 cross join t2 where not exists ( select null from t2 where t2.year = t1.year and t2.month = t1.month );