Ver Mensaje Individual
  #2 (permalink)  
Antiguo 21/12/2006, 13:13
daniel00
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 18 años
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