Ayuda con un Select que parecia sencillo

28/01/2010 - 19:05 por Samuel SMH | Informe spam
Hola foro:
tengo lo siguiente
semestre cuota recibo monto fecha
20092596 1 20030750033 348.50 2009-08-31
20092596 1 0720248949 229.50 2009-08-31
20091000 2 0011111111 100.00 2009-11-15
20091000 2 0022222222 80.00 2009-11-10

deseo obtener el primer registro de cada cuota sumando Monto;
y conservar todas las columnas;
Asi:
semestre cuota recibo monto fecha
20092596 1 20030750033 578.00 2009-08-31
20091000 2 0011111111 180.00 2009-11-15

Gracias por la ayuda
 

Leer las respuestas

#1 Alejandro Mesa
28/01/2010 - 19:24 | Informe spam
Samuel,

Cual version de SS usas?

En las versiones 2005 / 2008, puedes hacer uso de las funciones de rango y
la clausula OVER.

DECLARE @T TABLE (
semestre int,
cuota int,
recibo varchar(15),
monto money,
fecha datetime
);

INSERT INTO @T VALUES(20092596, 1, '20030750033', 348.50, '2009-08-31');
INSERT INTO @T VALUES(20092596, 1, '0720248949', 229.50, '2009-08-31');
INSERT INTO @T VALUES(20091000, 2, '0011111111', 100.00, '2009-11-15');
INSERT INTO @T VALUES(20091000, 2, '0022222222', 80.00, '2009-11-10');

;WITH r_set AS (
SELECT
semestre,
cuota,
recibo,
monto,
fecha,
ROW_NUMBER() OVER(PARTITION BY semestre, cuota ORDER BY fecha) AS rn,
SUM(monto) OVER(PARTITION BY semestre, cuota) AS sum_monto
FROM
@T
)
SELECT
semestre,
cuota,
recibo,
sum_monto,
fecha
FROM
r_set
WHERE
rn = 1;
GO


AMB




"Samuel SMH" wrote:

Hola foro:
tengo lo siguiente
semestre cuota recibo monto fecha
20092596 1 20030750033 348.50 2009-08-31
20092596 1 0720248949 229.50 2009-08-31
20091000 2 0011111111 100.00 2009-11-15
20091000 2 0022222222 80.00 2009-11-10

deseo obtener el primer registro de cada cuota sumando Monto;
y conservar todas las columnas;
Asi:
semestre cuota recibo monto fecha
20092596 1 20030750033 578.00 2009-08-31
20091000 2 0011111111 180.00 2009-11-15

Gracias por la ayuda

Preguntas similares