'SQL- all rows which are present in all years

I have the following columns in my DB

Codes

year |  code   |
----------------
2009 | 10001   |
2009 | 10002   |
2009 | 10003   |

2010 | 10001   |
2010 | 10002   |
2010 | 10004   |

2011 | 10001   |
2011 | 10005   |
2011 | 10010   |

How do I find all the codes which are preset in all years. For example in the above I want only 10001 since its the only code which is present in all years. I've tried

SELECT code FROM Codes
GROUP BY code 
HAVING count(year) = 3

But this isn't very flexible since I may want to restrict this to a subset, for example, find all codes only in years 2010 and 2011.



Solution 1:[1]

SELECT code 
FROM Codes
where year in (2010,2011,2012)
GROUP BY code 
HAVING count( distinct year ) = 3

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1