Como hacer este Select ???

15/01/2010 - 16:43 por Samuel SMH | Informe spam
Tengo lo siguiente en SQL2000 , necesito hacer algo asi como un PIVOT.

recibo cuota monto
100 1 250
101 1 150
102 2 350
103 3 50
104 2 30

Deseo obtener:

descripcion 1 2 3
Recibo 250 350 50
Recibo 150 30

Solo puedo llegar a esto; pero no es lo correcto.. que me falta??

descripcion 1 2 3
Recibo 400 0 0
Recibo 0 380 0
Recibo 0 0 50

Gracias por la ayuda... ya estoy mareado probando tanto y no logro.

Preguntas similare

Leer las respuestas

#6 Samuel SMH
15/01/2010 - 18:14 | Informe spam
Funciono a la perfeccion; claro hay otras columnas que estan implicadas pero
ya lo adapte y quedo OK.

Gracias Alejandro y Fredy por el apoyo.

"Alejandro Mesa" wrote:

Ve si esto te es de ayuda.

DECLARE @t TABLE (
recibo int,
cuota int,
monto int);

INSERT INTO @t VALUES(100, 1, 250);
INSERT INTO @t VALUES(101, 1, 150);
INSERT INTO @t VALUES(102, 2, 350);
INSERT INTO @t VALUES(103, 3, 50);
INSERT INTO @t VALUES(104, 2, 30);

SELECT
'recibo' AS descripcion,
SUM(CASE WHEN cuota = 1 THEN monto END) AS [1],
SUM(CASE WHEN cuota = 2 THEN monto END) AS [2],
SUM(CASE WHEN cuota = 3 THEN monto END) AS [3]
FROM
(
SELECT
recibo,
cuota,
monto,
(
SELECT COUNT(*)
FROM @t AS B
WHERE B.cuota = A.cuota AND B.recibo <= A.recibo
) as rn
FROM
@t AS A
) AS C
GROUP BY
rn;
GO


AMB


"Alejandro Mesa" wrote:

> Samuel,
>
> Pudieras describir lo que deseas?
>
> Al parecer estas agrupando por valor de [cuota], pero a la misma vez estas
> creando tantas columnas como cuotas existen. cual es la logica de agrupacion
> en el resultado que deseas?
>
> Cual es el role que juega la columna [recibo] en todo esto?
>
>
> AMB
>
>
> "Samuel SMH" wrote:
>
> > Tengo lo siguiente en SQL2000 , necesito hacer algo asi como un PIVOT.
> >
> > recibo cuota monto
> > 100 1 250
> > 101 1 150
> > 102 2 350
> > 103 3 50
> > 104 2 30
> >
> > Deseo obtener:
> >
> > descripcion 1 2 3
> > Recibo 250 350 50
> > Recibo 150 30
> >
> > Solo puedo llegar a esto; pero no es lo correcto.. que me falta??
> >
> > descripcion 1 2 3
> > Recibo 400 0 0
> > Recibo 0 380 0
> > Recibo 0 0 50
> >
> > Gracias por la ayuda... ya estoy mareado probando tanto y no logro.
> >
Respuesta Responder a este mensaje
#7 Alberto Daniel
18/01/2010 - 22:22 | Informe spam
Hola,

intenta esto:

select recibo
Sum(Case When cuota = 1 Then monto Else 0 End) As 1,
Sum(Case When cuota = 2 Then monto Else 0 End) As 2,
Sum(Case When cuota = 3 Then monto Else 0 End) As 3
From tabla
Group By recibo

Saludos,

"Samuel SMH" wrote in message
news:
Tengo lo siguiente en SQL2000 , necesito hacer algo asi como un PIVOT.

recibo cuota monto
100 1 250
101 1 150
102 2 350
103 3 50
104 2 30

Deseo obtener:

descripcion 1 2 3
Recibo 250 350 50
Recibo 150 30

Solo puedo llegar a esto; pero no es lo correcto.. que me falta??

descripcion 1 2 3
Recibo 400 0 0
Recibo 0 380 0
Recibo 0 0 50

Gracias por la ayuda... ya estoy mareado probando tanto y no logro.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida