SQL - selecione Consulta para linhas dinâmicas complexas

Preciso recuperar o ListingId da tabela abaixo com base nas condições de pesquisa. Ajude a melhor maneira de recuperar a consulta para as condições abaixo

Observação: o ListingId pode ter qualquer número de ExtrafieldId; portanto, a pesquisa do ListingId é baseada no dinâmico ExtrafieldId

If (ExtrafieldId = 1 and Value = 1) => OUTPUT - 20, 22
If (ExtrafieldId = 1 and Value = 1) and (ExtrafieldId = 2 and Value = 7) => OUTPUT - 21
If (ExtrafieldId =4and Value = 1999) => OUTPUT - 20, 21, 23

e assim por diante..

ListingId   ExtraFieldId    Value      
20  1   1      
20  2   4      
20  3          
20  4   1990       
21  1   2      
21  2   7      
21  3          
21  4   1990       
22  1   1      
22  2   4      
22  3          
22  4   2000       
23  1   NULL       
23  2   NULL       
23  4   1999    

questionAnswers(6)

yourAnswerToTheQuestion