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

Ayuda porfavor !!!

Estas en el tema de Ayuda porfavor !!! en el foro de SQL Server en Foros del Web. hola ayuda porfavor lo que pasa es ke tango este query select DISTINCT A.idnumoc, sum(D.totalpzasped),c.numenvio,F.deslarga from abordencompra A inner join dienviosoc B on A.idoc=B.iddocto inner ...
  #1 (permalink)  
Antiguo 21/12/2006, 10:15
Avatar de dianatorres  
Fecha de Ingreso: diciembre-2006
Mensajes: 26
Antigüedad: 17 años, 5 meses
Puntos: 0
Ayuda porfavor !!!

hola ayuda porfavor lo que pasa es ke tango este query

select DISTINCT A.idnumoc, sum(D.totalpzasped),c.numenvio,F.deslarga from abordencompra A
inner join dienviosoc B on A.idoc=B.iddocto
inner join dienvios C on C.idenvio=B.idenvio
inner join dienviosdet D on D.idenvio=C.idenvio
inner join secuencias E on D.idlgs=E.idlgs
inner join lineas F on F.idlinea=E.idlinea

where

c.idtipoenv=3


group by A.idnumoc,c.numenvio,F.deslarga

y me arroja este resultado


idnumoc suma numenvio deslarga
----------- ------ ----------- ---------
28 ------ 276 ----- 1 ----- HONDA
28 ------ 6 ----- 1 ----- EUROPEO
28 ------ 18 ----- 1 ----- RENAULT
28 ------ 264 ----- 1 ----- VOLKSWAGEN
28 ------ 138 ----- 1 ----- NISSAN
28 ------ 621 ----- 1 ----- CHRYSLER


lo que io quiero que me haga es esto


idnumoc HONDA EUROPEO RENAULT VOLKSWAGEN NISSAN CHRYSLER
28 ------ 276 ------ 6 ------ 18 ------ 264 ----- 138 ------- 621

porfavor ayudenme es mui urgente i no se como hacerlo pliess

Última edición por dianatorres; 21/12/2006 a las 10:21 Razón: porque las tablas nos se ven bien , salen chuekas i no se entienden
  #2 (permalink)  
Antiguo 21/12/2006, 13:13
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: Ayuda porfavor !!!

Que tal Diana.

Eso se llama una consulta de referencias cruzadas, una solución ràpida es la siguiente, a tu primer query cambialo de la siguiente forma:

Código:
select DISTINCT A.idnumoc, sum(D.totalpzasped),c.numenvio,F.deslarga 
into #tempInfo
from abordencompra A 
inner join dienviosoc B on A.idoc=B.iddocto
inner join dienvios C on C.idenvio=B.idenvio
inner join dienviosdet D on D.idenvio=C.idenvio
inner join secuencias E on D.idlgs=E.idlgs
inner join lineas F on F.idlinea=E.idlinea
where
c.idtipoenv=3 
group by A.idnumoc,c.numenvio,F.deslarga
Tienes una tabla temporal llamada #tempInfo, ahora con el siguiente query lo "transpones".

Código:
select idnumo, 
         sum ( 
	case deslarga
	   WHEN 'HONDA' THEN suma
           ELSE 0
        END
         ) as 'HONDA', 
         sum ( 
	case deslarga
	   WHEN 'EUROPEO' THEN suma
           ELSE 0
        END
         ) as 'EUROPEO',
         sum ( 
	case deslarga
	   WHEN 'RENAULT' THEN suma
           ELSE 0
        END
         ) as 'RENAULT'            
from #temp
group by idnumo
El problema es que debes de conocer el número de columnas que vas a presentar, para hacer tu query.

Ahora bien lo anterior se soluciona haciendo un proceso que "arme" el query ( una setencia SQL) de forma automática y sólo tengas que ejecutarlo, y no importe el número de columnas a presentar.

Saludos y cualquier duda aquí estamos.

Suerte!

P.D. En los libros en pantalla de SQL Server hay ejemplos al respecto, busca por "referencias cruzadas" o "cross tab"

Última edición por daniel00; 21/12/2006 a las 13:15 Razón: Agregar info
  #3 (permalink)  
Antiguo 21/12/2006, 16:49
Avatar de dianatorres  
Fecha de Ingreso: diciembre-2006
Mensajes: 26
Antigüedad: 17 años, 5 meses
Puntos: 0
Sonrisa Re: Ayuda porfavor !!!

hola daniell ke tal =)

gracias por atender mi llamada

mira lo ke me dices es ke meta mi cuery en una tabla temporal ?
  #4 (permalink)  
Antiguo 21/12/2006, 16:50
Avatar de dianatorres  
Fecha de Ingreso: diciembre-2006
Mensajes: 26
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Ayuda porfavor !!!

porque la primera parte sinceramente no me quedo mui clara , la verdad


select DISTINCT A.idnumoc, sum(D.totalpzasped),c.numenvio,F.deslarga
into #tempInfo <===== esta parte ?
from abordencompra A
inner join dienviosoc B on A.idoc=B.iddocto
inner join dienvios C on C.idenvio=B.idenvio
inner join dienviosdet D on D.idenvio=C.idenvio
inner join secuencias E on D.idlgs=E.idlgs
inner join lineas F on F.idlinea=E.idlinea
where
c.idtipoenv=3
group by A.idnumoc,c.numenvio,F.deslarga
  #5 (permalink)  
Antiguo 21/12/2006, 17:07
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Re: Ayuda porfavor !!!

Que tal Diana.

Para obtener los resultados en la forma que esperas es muy complicado para obtenerlo en un solo query.

Entonces tienes hacer un stored porcedure.

Y sí efetivamente en la primera parte se estan metiendo a una tabla temporal los registros con los cuales se trabajaran en la segunda parte.

Con el segundo query se trnaspone la información.

Haz la prueba en el query analizer, ya tienes la mayor parte del código, para que veas de forma inmediata los resultados

Saludos.
  #6 (permalink)  
Antiguo 21/12/2006, 17:23
Avatar de dianatorres  
Fecha de Ingreso: diciembre-2006
Mensajes: 26
Antigüedad: 17 años, 5 meses
Puntos: 0
Ayuda porfavor !!!

muchas gracias Daniel
la verdad si salio , sinceramente graciass

curisosamente tu siempre me has resuelto esas dudas ke tengo

eres lo maximo
  #7 (permalink)  
Antiguo 21/12/2006, 17:53
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 5 meses
Puntos: 8
Sonrisa Re: Ayuda porfavor !!!

Hola Diana!

Por nada, cuando gustes.

Saludos.
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:58.