Teniendo estos registros en una tabla:
ID Marca Version TipoVersion CodEstadoMarca
1 XX 0 PPP C
2 XX 1 CKL C
3 XX 2 CV C
4 XX 3 DDD C
5 XX 4 ANU D
6 JJ 0 PPP C
7 JJ 1 CV C
8 JJ 2 CV C
9 JJ 3 DDD C
10 NN 0 PPP C
11 NN 1 KKK C
12 AA 0 PPP C
13 AA 1 CV C
Necesito que me muestre los registros de las Marcas donde se cumpla que no hay un codEstadoMarca 'D' o un TipoVersion 'ANU' y ademas haya en tipoVersion algun 'CV'
Es decir deberia mostrar lo siguiente:
ID Marca Version TipoVersion CodEstadoMarca
6 JJ 0 PPP C
7 JJ 1 CV C
8 JJ 2 CV C
9 JJ 3 DDD C
12 AA 0 PPP C
13 AA 1 CV C
Estoy usando SQL SERVER de Microsoft.
Una solución que estoy probando es:
SELECT DISTINCT T0.Marca FROM TABLA T0 WHERE CodEstadoMarca = 'D'
Con esto me muestra el codigo de Marca que contiene alguna 'D'
Ahora lo siguiente seria hacer un select de todas las Marcas y solo mostrar las que no aparezcan en el resultado del Select anterior. Pero no se como enlazarlo
Entiendo que buscas una condición no inclusiva CodEstadoMarca = 'D' OR TipoVersion = 'ANU' y una inclusiva tipoVersion = 'CV', podrías hacer algo así
WHERE Marca NOT IN (SELECT DISTINCT T0.Marca
FROM TABLA T0
WHERE CodEstadoMarca = 'D' OR TipoVersion = 'ANU')
AND Marca IN (SELECT DISTINCT T0.Marca
FROM TABLA T0
WHERE tipoVersion = 'CV')