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

Consulta imposible?

Estas en el tema de Consulta imposible? en el foro de SQL Server en Foros del Web. Hola a todos, vereis tengo la tipica consulta que "deberia" ser muy simple por que parece super facil pero llevo 1 semana dandole a la ...
  #1 (permalink)  
Antiguo 24/09/2010, 14:32
 
Fecha de Ingreso: febrero-2008
Mensajes: 24
Antigüedad: 16 años, 1 mes
Puntos: 0
Consulta imposible?

Hola a todos, vereis tengo la tipica consulta que "deberia" ser muy simple por que parece super facil pero llevo 1 semana dandole a la cabeza y nada no lo consigo y me da que o es imposible con Transact-SQL o de facil nada.
He probado con group by etc pero no doy con el tema, ¿alguna ayuda?
Esto es lo que tengo en la tabla que me interesa(falta el id y el id_cliente pero de momento no son necesarios):

y esto es lo que quiero obtener con un procedimiento almacenado de SQL-Server:


Os deberia la vida si me dais una solucion, lo de poner L en vez de Lunes etc se que es rizar el rizo pero seria perfecto.

Muchas gracias!
  #2 (permalink)  
Antiguo 24/09/2010, 15:02
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Consulta imposible?

Buenas tardes gonmor te dejo una función te te sirve para concatenar los días de la semana, esto lo integras a tu consulta

Código SQL:
Ver original
  1. CREATE FUNCTION dbo.f_concatena (@cantidad INT, @descripcion VARCHAR(10))
  2. RETURNS VARCHAR(5000) AS
  3. BEGIN
  4. DECLARE @retvalue VARCHAR(5000)
  5. SET @retvalue=''
  6. SELECT @retvalue = @retvalue +ltrim(rtrim(isnull(DiaSemana,'')))+','
  7. FROM
  8. (
  9. SELECT DiaSemana FROM TuTabla T
  10. WHERE T.cantidad = @cantidad AND T.descripcion = @descripcion) AS tmp_tbl
  11. RETURN SUBSTRING(@retvalue,1,len(@retvalue)-1)
  12. END
  13.  
  14. SELECT dbo.f_concatena(1, 'Pistolin')
  15.  
  16. --Esto regresa Lunes,Martes,Miercoles,Jueves,Viernes

Sólo tienes que tener cuidado con los tipos de dato de tus campos.

Para lo de poner L,M,M,J,V, en la función utiliza un Case-When antes de concatenar el valor a la variable @retvalue o una opción más formal es es crear una tabla de equivalencias y hacer el JOIN con tu Tabla.

Haz algunas pruebas y nos comentas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 25/09/2010, 04:24
 
Fecha de Ingreso: febrero-2008
Mensajes: 24
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Consulta imposible?

Leonardo me has quitado un gran dolor de cabeza, eres un crack! muchisimas gracias, he modificado un poco la funcion para adaptarmela y cambiado el procedimiento almacenado que llamaba un poco y ahora va de lujo.

Te debo una, con todo lo que me queda aun por hacer me habia atascado en esto y estaba perdiendo mucho tiempo.

Muchisimas gracias.

Etiquetas: imposible
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 23:05.