ID MODEL MODELSTATUS CONTROL
11 100 GOOD XN
24 100 TRENDING BF
33 101 GOOD XN
46 102 BAD BF
50 103 BAD XN
64 103 BAD BF
77 104 PENDING XN
89 104 TRENDING BF
92 105 TRENDING BF
93 105 TRENDING XN
Dados os dados acima, como eu retornaria os resultados abaixo. Pode haver 1 ou 2 (no máximo) registros com o mesmo MODELO. Se houver 2 registros para um MODEL o CONTROL será diferente.
Se MODESTATUS for 'Trending', retorne esse registro. Caso contrário, se MODELSTATUS for 'Pendente' ou 'Bad', retorne esse registro. Else se houver 2 registros para um MODEL onde MODELSTATUS são o mesmo registro de retorno com CONTROL é 'XN'
ID MODEL MODELSTATUS CONTROL
24 100 TRENDING BF
33 101 GOOD XN
46 102 BAD BF
50 103 BAD XN
77 104 PENDING BF
93 105 TRENDING XN
Esta consulta fornece a saída necessária:
Veja este SQL Fiddle .
Presumo que esta seja apenas uma tabela de amostra com valores char fáceis de entender e dados reais usando int em vez de varchar para status e controle.
Em termos de desempenho e IO na vida real, se esse tipo de tabela aumentar, é aconselhável melhorar o design e substituir varchar por ids tinyint para cada controle e status.
Resultado