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

Condicion en query.

Estas en el tema de Condicion en query. en el foro de SQL Server en Foros del Web. Buenas estimados, aver si puedo explicarme bien: tengo un producto asignado a un negocio. Este puede cambiar de negocio, es decir, que un producto puede ...
  #1 (permalink)  
Antiguo 19/04/2013, 08:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Condicion en query.

Buenas estimados, aver si puedo explicarme bien:

tengo un producto asignado a un negocio. Este puede cambiar de negocio, es decir, que un producto puede estar en varios negocios (no a la vez).

Por cada cambio de negocio, genera un registro:

1 / Producto 1 / Negocio 1
2 / Producto 1 / Negocio 2
3 / Producto 1 / Negocio 3

Aqui la cuestión:

tengo que hacer una consulta tal que cuando se dé la condición que el MAX id del Producto 1 es un Negocio 3 que el ID anterior sea un Negocio 2

Se puede dar que se presente asi:

1 / Producto 1 / Negocio 2
2 / Producto 1 / Negocio 1
3 / Producto 1 / Negocio 3

Donde no es válido como condición.

Bueno, espero ser claro y puedo detallar lo que sea necesario!
Gracias y saludos!
Gustav.
  #2 (permalink)  
Antiguo 19/04/2013, 08:52
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: Condicion en query.

Puedes explicarte mejor, o sea lo que quieres en el ejemplo que muestras:

1 / Producto 1 / Negocio 2
2 / Producto 1 / Negocio 1
3 / Producto 1 / Negocio 3


el resultado seria:


2 / Producto 1 / Negocio 1
1 / Producto 1 / Negocio 2
3 / Producto 1 / Negocio 3

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 19/04/2013, 08:54
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Condicion en query.

Hola, gracias!

Si, sabía que iba a ser complicado explicarlo.

Lo que quiero es hacer una consulta que muestre el resultado siempre y cuando se de el esquema que el MAX id del Producto 1 esta en un Negocio 3 y el id anterior en un Negocio 2.

Creo que ahora esta más claro!
Saludos,
Gustavo.
  #4 (permalink)  
Antiguo 19/04/2013, 09:15
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: Condicion en query.

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. producto VARCHAR(20),
  5. negocio VARCHAR(30)
  6. )
  7.  
  8. INSERT INTO #temp VALUES (1,'Producto 1','Negocio 1')
  9. INSERT INTO #temp VALUES (2,'Producto 1','Negocio 2')
  10. INSERT INTO #temp VALUES (3,'Producto 1','Negocio 3')
  11.  
  12.  
  13. INSERT INTO #temp VALUES (4,'Producto 2','Negocio 1')
  14. INSERT INTO #temp VALUES (5,'Producto 2','Negocio 2')
  15. INSERT INTO #temp VALUES (6,'Producto 2','Negocio 3')
  16.  
  17. INSERT INTO #temp VALUES (7,'Producto 3','Negocio 2')
  18. INSERT INTO #temp VALUES (8,'Producto 3','Negocio 1')
  19. INSERT INTO #temp VALUES (9,'Producto 3','Negocio 3')
  20.  
  21.  
  22.  
  23. SELECT CASE WHEN t1.Negocio='Negocio 3' AND t2.Negocio='Negocio 2' THEN 'si' ELSE 'No' END AS condicion,
  24. t1.id,t2.producto
  25. FROM (
  26. SELECT negocio,id FROM #temp WHERE CONVERT(VARCHAR(20),id) + '|' + producto IN
  27. (SELECT CONVERT(VARCHAR(20),MAX(id)) + '|' + producto FROM #temp GROUP BY producto)) AS t1
  28. LEFT JOIN (SELECT * FROM #temp) AS t2 ON (t2.id=t1.id-1)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 19/04/2013, 09:19
 
Fecha de Ingreso: noviembre-2009
Mensajes: 381
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Condicion en query.

wow, a testear!!!

Muchas gracias!
Gustav.

Etiquetas: registro
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 07:54.