Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Multipes condiciones para el mismo campo

Estas en el tema de Multipes condiciones para el mismo campo en el foro de SQL Server en Foros del Web. Hola tengo en SQL Server 2005 una tabla con los siguientes registros Cod Categoria 1 A 1 B 1 C 1 D 2 A 3 ...
  #1 (permalink)  
Antiguo 26/11/2012, 18:28
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Multipes condiciones para el mismo campo

Hola
tengo en SQL Server 2005 una tabla con los siguientes registros

Cod Categoria
1 A
1 B
1 C
1 D
2 A
3 A
4 C

Necesito un select que me devuelva aquellos registros que tienen la categoria A Y B (ambas). En este ejemplo seria el 1
Si pongo select Cod from MiTabla where categoria in ('A', 'B') me devuelve 1,2 y 3.
Si pongo Select Cod from MiTabla where categoria = 'A' and Categoria = 'B' no me devuelve registros )probe con varias opciones de parentesis


Por favor, alguien podrá ayudarme?

Gracias, saludos
  #2 (permalink)  
Antiguo 26/11/2012, 23:55
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Multipes condiciones para el mismo campo

Intenta la siguiente:
Código SQL:
Ver original
  1. SELECT  Cod
  2. FROM    MiTabla
  3. WHERE   categoria IN ('A', 'B')
  4. GROUP BY Cod
  5. HAVING  COUNT(Cod)=2;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #3 (permalink)  
Antiguo 27/11/2012, 09:12
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Multipes condiciones para el mismo campo

un poco rebuscado pero se obtiene lo que necesitas jejeje

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. cod INT,
  4. cat VARCHAR(10)
  5. )
  6.  
  7. INSERT INTO #temp VALUES (1,'A')
  8. INSERT INTO #temp VALUES (1,'B')
  9. INSERT INTO #temp VALUES (1,'C')
  10. INSERT INTO #temp VALUES (1,'D')
  11. INSERT INTO #temp VALUES (2,'A')
  12. INSERT INTO #temp VALUES (3,'A')
  13. INSERT INTO #temp VALUES (4,'C')
  14.  
  15. SELECT * FROM #temp WHERE cod=(
  16. SELECT cod FROM #temp WHERE (cat='A' OR cat='B')
  17. GROUP BY cod
  18. HAVING COUNT(*)=2
  19. ) AND (cat='A' OR cat='B')

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Última edición por Libras; 27/11/2012 a las 09:25
  #4 (permalink)  
Antiguo 28/11/2012, 06:18
 
Fecha de Ingreso: febrero-2009
Mensajes: 312
Antigüedad: 15 años, 2 meses
Puntos: 4
Respuesta: Multipes condiciones para el mismo campo

Hola

A tú pregunta:

Si pongo Select Cod from MiTabla where categoria = 'A' and Categoria = 'B' no me devuelve registros )probe con varias opciones de parentesis

Probaste con esta:

Select Cod from MiTabla where categoria = 'A' OR Categoria = 'B'

Saludos
  #5 (permalink)  
Antiguo 28/11/2012, 09:25
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Multipes condiciones para el mismo campo

Esa consulta no regresa lo que el quiere que sea nada mas el registro 1 que cumple con las 2 condiciones en ese caso regresa el 1,2 y 3 ya que las 3 cumplen con A o con B :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 09/12/2012, 12:03
 
Fecha de Ingreso: enero-2007
Ubicación: 9 de julio
Mensajes: 111
Antigüedad: 17 años, 3 meses
Puntos: 2
Respuesta: Multipes condiciones para el mismo campo

Mil gracias GeriReshef por tu espuesta.
Me ha servido

SELECT Cod
FROM MiTabla
WHERE categoria IN ('A', 'B')
GROUP BY Cod
HAVING Count(Cod)=2;

Respecto a usar OR en vez de AND no se puede dado que devuelve cualquier registro que cumple con "al menos una condicion".
La respuesta de Libras no es aplicable cuando las condiciones con variaables. En este caso habia dos pero pueden haber mas

A TODOS mil gracias por sus ayudas
  #7 (permalink)  
Antiguo 09/12/2012, 14:15
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Multipes condiciones para el mismo campo

Proba con esta query:

select cod
from tabla
group by cod
having count(cod) >= 2

Sabiendo la disposición de los datos en la tabla (A,B,C,D) si tiene 2 o mas significa que A y B son categoria y cumple con lo que necesitas!

Saludos, espero te sirva

Etiquetas: select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:59.