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

[SOLUCIONADO] Obtener solo recurrencia de una tabla

Estas en el tema de Obtener solo recurrencia de una tabla en el foro de SQL Server en Foros del Web. Hola buenos dias. Mi pregunta novata es la siguiente: tengo una tabla con los sgtes campos id - periodo quiero hacer una query que me ...
  #1 (permalink)  
Antiguo 25/03/2014, 10:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Pregunta Obtener solo recurrencia de una tabla

Hola buenos dias.

Mi pregunta novata es la siguiente:

tengo una tabla con los sgtes campos

id - periodo

quiero hacer una query que me retorne solo los valores que tengan la siguiente estructura

ID | PERIODO
---------------------------------------------------------------
1 | 201309, 201310, 201311, 201312, 201401

que me devuelva solo las ID que estan en esos 5 periodos

saludos
  #2 (permalink)  
Antiguo 25/03/2014, 10:16
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: Obtener solo recurrencia de una tabla

Código SQL:
Ver original
  1. SELECT id FROM tabla WHERE perido IN (201309, 201310, 201311, 201312, 201401)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 25/03/2014, 11:47
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: Obtener solo recurrencia de una tabla

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. SELECT id FROM tabla WHERE perido IN (201309, 201310, 201311, 201312, 201401)
Hola, ya lo habia hecho, lo malo es que me devuelve todo lo que tenga esos valores, por ejemplo:

1, 2
3
1, 3
4, 2
1, 2, 3, 4, 5 <---- lo que yo necesito

y yo solo necesito los ID que tengan esos 5 valores :(
  #4 (permalink)  
Antiguo 25/03/2014, 12:02
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: Obtener solo recurrencia de una tabla

Código SQL:
Ver original
  1. SELECT id FROM tabla WHERE (perido=201309 AND periodo=201310 AND periodo=201311 AND periodo=201312 AND periodo=201401)

Puedes poner un ejemplo de tus datos???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 25/03/2014, 12:32
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: Obtener solo recurrencia de una tabla

Cita:
Iniciado por Libras Ver Mensaje
Código SQL:
Ver original
  1. SELECT id FROM tabla WHERE (perido=201309 AND periodo=201310 AND periodo=201311 AND periodo=201312 AND periodo=201401)

Puedes poner un ejemplo de tus datos???
la estructura de la tabla es:

ID | Periodo
------------------
1 | 201309
1 | 201309
1 | 201310
1 | 201311
1 | 201312
1 | 201401
2 | 201309
2 | 201401


si ocupo el "and" no devolverá nada ya que la tabla tiene solo 2 campos
  #6 (permalink)  
Antiguo 25/03/2014, 12:43
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: Obtener solo recurrencia de una tabla

bueno podrias hacer esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. periodo INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES (1 , 201309)
  8. INSERT INTO #temp VALUES (1 , 201309)
  9. INSERT INTO #temp VALUES (1 , 201310)
  10. INSERT INTO #temp VALUES (1 , 201311)
  11. INSERT INTO #temp VALUES (1 , 201312)
  12. INSERT INTO #temp VALUES (1 , 201401)
  13. INSERT INTO #temp VALUES (2 , 201309)
  14. INSERT INTO #temp VALUES (2 , 201401)
  15.  
  16. SELECT id FROM(
  17. SELECT id,SUM(total) suma FROM(
  18. SELECT id,periodo, CASE WHEN periodo=201309 OR periodo=201310 OR periodo=201311 OR periodo=201312 OR periodo=201401 THEN COUNT(1) END AS total  FROM #temp GROUP BY id,periodo
  19. ) AS t1 GROUP BY id
  20. ) AS t2 WHERE suma>=5

donde solo regresa los id's que tengan los 5 periodos(o mas en este caso ya que el id "1" tiene 2 veces 201309)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 25/03/2014, 13:00
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: Obtener solo recurrencia de una tabla

Cita:
Iniciado por Libras Ver Mensaje
bueno podrias hacer esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. periodo INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES (1 , 201309)
  8. INSERT INTO #temp VALUES (1 , 201309)
  9. INSERT INTO #temp VALUES (1 , 201310)
  10. INSERT INTO #temp VALUES (1 , 201311)
  11. INSERT INTO #temp VALUES (1 , 201312)
  12. INSERT INTO #temp VALUES (1 , 201401)
  13. INSERT INTO #temp VALUES (2 , 201309)
  14. INSERT INTO #temp VALUES (2 , 201401)
  15.  
  16. SELECT id FROM(
  17. SELECT id,SUM(total) suma FROM(
  18. SELECT id,periodo, CASE WHEN periodo=201309 OR periodo=201310 OR periodo=201311 OR periodo=201312 OR periodo=201401 THEN COUNT(1) END AS total  FROM #temp GROUP BY id,periodo
  19. ) AS t1 GROUP BY id
  20. ) AS t2 WHERE suma>=5

donde solo regresa los id's que tengan los 5 periodos(o mas en este caso ya que el id "1" tiene 2 veces 201309)
muy buena query, lo malo es que me retorna todo y no las ID que tengan esos 5 periodos :(

gracias por el intento
  #8 (permalink)  
Antiguo 25/03/2014, 13:06
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: Obtener solo recurrencia de una tabla

nada mas retorna el id que tenga los 5 periodos, probaste la query??? para mi que no......

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. periodo INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES (1 , 201309)
  8. INSERT INTO #temp VALUES (1 , 201309)
  9. INSERT INTO #temp VALUES (1 , 201310)
  10. INSERT INTO #temp VALUES (1 , 201311)
  11. INSERT INTO #temp VALUES (1 , 201312)
  12. INSERT INTO #temp VALUES (1 , 201401)
  13. INSERT INTO #temp VALUES (2 , 201309)
  14. INSERT INTO #temp VALUES (2 , 201401)
  15.  
  16. INSERT INTO #temp VALUES (3 , 201309)
  17. INSERT INTO #temp VALUES (3 , 201310)
  18. INSERT INTO #temp VALUES (3 , 201311)
  19. INSERT INTO #temp VALUES (3 , 201312)
  20. INSERT INTO #temp VALUES (3 , 201401)
  21.  
  22. INSERT INTO #temp VALUES (4 , 201309)
  23. INSERT INTO #temp VALUES (4 , 201310)
  24.  
  25. SELECT id FROM(
  26. SELECT id,SUM(total) suma FROM(
  27. SELECT id,periodo, CASE WHEN periodo=201309 OR periodo=201310 OR periodo=201311 OR periodo=201312 OR periodo=201401 THEN COUNT(1) END AS total  FROM #temp GROUP BY id,periodo
  28. ) AS t1 GROUP BY id
  29. ) AS t2 WHERE suma>=5

pruebo con estos datos y obtengo 1 y 3, donde dices que no se obtiene lo que necesitas?? estas usando sql server???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 25/03/2014, 13:51
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: Obtener solo recurrencia de una tabla

Cita:
Iniciado por Libras Ver Mensaje
nada mas retorna el id que tenga los 5 periodos, probaste la query??? para mi que no......

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. periodo INT
  5. )
  6.  
  7. INSERT INTO #temp VALUES (1 , 201309)
  8. INSERT INTO #temp VALUES (1 , 201309)
  9. INSERT INTO #temp VALUES (1 , 201310)
  10. INSERT INTO #temp VALUES (1 , 201311)
  11. INSERT INTO #temp VALUES (1 , 201312)
  12. INSERT INTO #temp VALUES (1 , 201401)
  13. INSERT INTO #temp VALUES (2 , 201309)
  14. INSERT INTO #temp VALUES (2 , 201401)
  15.  
  16. INSERT INTO #temp VALUES (3 , 201309)
  17. INSERT INTO #temp VALUES (3 , 201310)
  18. INSERT INTO #temp VALUES (3 , 201311)
  19. INSERT INTO #temp VALUES (3 , 201312)
  20. INSERT INTO #temp VALUES (3 , 201401)
  21.  
  22. INSERT INTO #temp VALUES (4 , 201309)
  23. INSERT INTO #temp VALUES (4 , 201310)
  24.  
  25. SELECT id FROM(
  26. SELECT id,SUM(total) suma FROM(
  27. SELECT id,periodo, CASE WHEN periodo=201309 OR periodo=201310 OR periodo=201311 OR periodo=201312 OR periodo=201401 THEN COUNT(1) END AS total  FROM #temp GROUP BY id,periodo
  28. ) AS t1 GROUP BY id
  29. ) AS t2 WHERE suma>=5

pruebo con estos datos y obtengo 1 y 3, donde dices que no se obtiene lo que necesitas?? estas usando sql server???
si, estoy usando SQL Server, quizas por eso me devuelve tantos campos
  #10 (permalink)  
Antiguo 25/03/2014, 14:28
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: Obtener solo recurrencia de una tabla

el query solo regresa 1 registro que son los id's ya probaste el query que estoy poniendo???

si lo ejecutas con los datos que pongo de ejemplo regresa solo

1
3

que son los id's que cumplen con la condicion de tener todos los 5 periodos....que query estas ejecutando que te regresa mas registros???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 26/03/2014, 10:04
 
Fecha de Ingreso: mayo-2011
Mensajes: 17
Antigüedad: 13 años
Puntos: 0
Respuesta: Obtener solo recurrencia de una tabla

solucionado
Código SQL:
Ver original
  1. SELECT id, COUNT(DISTINCT(periodo)) FROM ejemplo GROUP BY id;

esta query me devuelve el valor unico de la recurrencia, si yo le aplico un > A, me devuelve los que yo necesito

gracias por su ayuda

Última edición por gnzsoloyo; 26/03/2014 a las 10:21

Etiquetas: campo, query, siguiente, tabla
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 06:18.