SQL Server - Obtener intervalo o rangos de números de otra tabla

   
Vista:

Obtener intervalo o rangos de números de otra tabla

Publicado por nfpinero (3 intervenciones) el 04/03/2014 11:39:49
Buenos días a todos,

Os describo la tabla de ejemplo que tengo y el problema.

La tabla de ejemplo seria una tabla simple con tres registros código, valor, activo. Mi necesidad surge a la hora de obtener la consulta con los intervalos (min y max), para cada registro código idéntico.

Para ser mas descriptivo si la tabla la relleno, con lo siguientes datos:

Cod | Valor | activo
1 | 1 | 1
1 | 2 | 1
1 | 3 | 1
1 | 4 | 0
1 | 5 | 0
1 | 6 | 1
1 | 7 | 1

Inicialmente utilizaba la siguiente consulta:

"SELECT cod, MIN(valor) AS min, MAX(valor) AS max, activo
FROM dbo.tabla_test
GROUP BY activo, cod"

El resultado de la consulta es:

cod | min | max | activo
1 | 4 | 5 | 0
1 | 1 | 7 | 1

Soy consciente de que la consulta no es la correcta ya que el resultado que yo busco es:

cod | min | max | activo
1 | 4 | 5 | 0
1 | 1 | 3 | 1
1 | 6 | 7 | 1

Os agradezco de antemano cualquier ayuda que me podáis ofrecer.

Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Obtener intervalo o rangos de números de otra tabla

Publicado por Isaias (3186 intervenciones) el 04/03/2014 19:38:03
Pues nunca vas a obtener lo que buscas con MIN y MAX en el ejemplo que nos muestras, deberías buscar alguna otra alternativa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener intervalo o rangos de números de otra tabla

Publicado por nfpinero (3 intervenciones) el 05/03/2014 08:44:57
Isaias,

Efectivamente con la consulta que he realizado no obtengo el resultado que busco, de ahí que haya abierto este hilo, por si alguien me puede orientar en la manera de obtenerlo.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener intervalo o rangos de números de otra tabla

Publicado por Rafael (88 intervenciones) el 05/03/2014 08:52:25
Con las columnas que cuentas es imposible obtener el resultado que buscas ya que no existe algun otro elemento discriminatorio.

Requieres o modificar los datos o en su defecto una columna extra que te permita realizar una agrupacion extra...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener intervalo o rangos de números de otra tabla

Publicado por nfpinero (3 intervenciones) el 05/03/2014 09:18:13
Hola Rafael,

Se podría añadir otra columna discriminatoria, no tengo muy claro si es necesaria, pero no hay problema en añadirla.

Cod | Valor | activo | referencia
1 | 1 | 1 | ref1
1 | 2 | 1 | ref1
1 | 3 | 1 | ref1
1 | 4 | 0 | ref2
1 | 5 | 0 | ref2
1 | 6 | 1 | ref1
1 | 7 | 1 | ref1

el resultado final (que busco) continuaría siendo el mismo

Cod | Min | Max | activo | referencia
1 | 1 | 3 | 1 | ref1
1 | 4 | 5 | 0 | ref2
1 | 6 | 7 | 1 | ref1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Obtener intervalo o rangos de números de otra tabla

Publicado por Isaias (3186 intervenciones) el 05/03/2014 19:52:17
No amigo, creo que no te quedo claro el asunto.

En la teoría de conjuntos, el conjunto 1-ref1, es UNO SOLO, por tanto, el valor menor es: 1 y el mayor es 7

"visualmente", tu y solo tu, sabes que hay 2 conjuntos 1-ref1, pero para la computadora y su lógica, solo existe UNO.

¿me explico?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener intervalo o rangos de números de otra tabla

Publicado por Khristian (5 intervenciones) el 05/03/2014 20:05:03
Yo eso lo sololucioné mas rapido... con vistas.

1.- Crea una vista1 donde obtengas el MIN(valor) para cada COD
2.- Crea una vista2 donde obtengas el Max(valor) para cada COD
3.- Crea una vista3 donde obtengas solo los valores distintos del campo COD (DISTINCT)
4.- Crea una vista donde relaciones las tres vistas. Relacion 1 a 1 por el campo COD.
En el SELECT solo pones de la vista3 el COD (seria como la tabla principal de todo esto), y de las vistas 1 y 2, los campos MIN y MAX, respectivamente.

Eso te retornará para cada fila del vista3, su correspondiente valor MIN y MAX de cada una de las otras vistas.

COD - MIN - MAX

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

Obtener intervalo o rangos de números de otra tabla

Publicado por Isaias (3186 intervenciones) el 05/03/2014 21:36:39
¿Ya probaste tu recomendación con los datos que nos proporcionaron?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar