Consulta

21/08/2003 - 00:22 por davud arias | Informe spam
una Consulta:

Tengo la estructura de esta dos tablas:

*Tabla Rangos:

RangoInicical RangoFin
.00 300.99
301.00 500.99
501.00 700.99
701.00 1000.99
1001.00 1500.99
1501.00 999999.99

*Tabla Cuentas

Cuenta Prestamo
0001 500
0002 700
0003 1100
0004 1200
0005 300

y quiero obtener los siguientes Consolidados

Rango Cuentas TotalPrestamo
.00 - 300.99 5 4500
301.00 - 500.99 6 8400
501.00 - 700.99 8 3200
701.00 - 1000.99 9 9700
1001.00 - 1500.99 4 50000
1501.00 - 999999.99 1 2500


como lo puedo hacer sin tener la necesidad de usar
cursores. Gracias
 

Leer las respuestas

#1 Javier Loria\(MVP\)
21/08/2003 - 20:39 | Informe spam
Hola:
Es mucho mas facil si nos posteas el codigo de las Tablas porque no
tenemos que asumir tanto, pero si es asi:
/* Codigo de Creacion */
CREATE TABLE Rangos
(
NumRango INT NOT NULL PRIMARY KEY,
RangoInicial NUMERIC(9,2) NOT NULL,
RangoFin NUMERIC(9,2) NOT NULL,
CONSTRAINT CH_InicialFinal
CHECK (RangoInicial<RangoFin)
)

INSERT Rangos(NumRango, RangoInicial, RangoFin)
VALUES(0, .00, 300.99)
INSERT Rangos(NumRango, RangoInicial, RangoFin)
VALUES(1,301.00, 500.99)
INSERT Rangos(NumRango, RangoInicial, RangoFin)
VALUES(2, 501.00, 700.99)
INSERT Rangos(NumRango, RangoInicial, RangoFin)
VALUES(3,701.00, 1000.99)
INSERT Rangos(NumRango, RangoInicial, RangoFin)
VALUES(4,1001.00, 1500.99)
INSERT Rangos(NumRango, RangoInicial, RangoFin)
VALUES(5,1501.00, 999999.99)

CREATE TABLE Cuentas(
CodigoCuenta CHAR(4) NOT NULL PRIMARY KEY,
Prestamo NUMERIC(9,2) NOT NULL
)
INSERT Cuentas(CodigoCuenta,Prestamo)
VALUES ('0001',500.0)
INSERT Cuentas(CodigoCuenta,Prestamo)
VALUES ('0002',700.0)
INSERT Cuentas(CodigoCuenta,Prestamo)
VALUES ('0003',1100.0)
INSERT Cuentas(CodigoCuenta,Prestamo)
VALUES ('0004',1200.0)
INSERT Cuentas(CodigoCuenta,Prestamo)
VALUES ('0005',300.0)

/* Fin de Codigo de Creacion */

Entonces creo que lo que se sirve es mas o menos esto:
/* Consulta Agrupada de Saldos */
SELECT CONVERT(VARCHAR(10),Rangos.RangoInicial)+
' - '+
CONVERT(VARCHAR(10),Rangos.RangoFin) AS Rango,
COUNT(*) AS Cuentas,
SUM(Prestamo) AS TotalPrestamo
FROM Rangos JOIN Cuentas
ON Rangos.RangoInicial<=Cuentas.Prestamo AND
Rangos.RangoFin>=Cuentas.Prestamo
GROUP BY CONVERT(VARCHAR(10),Rangos.RangoInicial)+
' - '+
CONVERT(VARCHAR(10),Rangos.RangoFin)
/* Fin de consulta Agrupada de Saldos */
Espero haber entendido lo que querias,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

davud arias escribio:
una Consulta:

Tengo la estructura de esta dos tablas:

*Tabla Rangos:

RangoInicical RangoFin
.00 300.99
301.00 500.99
501.00 700.99
701.00 1000.99
1001.00 1500.99
1501.00 999999.99

*Tabla Cuentas

Cuenta Prestamo
0001 500
0002 700
0003 1100
0004 1200
0005 300

y quiero obtener los siguientes Consolidados

Rango Cuentas TotalPrestamo
.00 - 300.99 5 4500
301.00 - 500.99 6 8400
501.00 - 700.99 8 3200
701.00 - 1000.99 9 9700
1001.00 - 1500.99 4 50000
1501.00 - 999999.99 1 2500


como lo puedo hacer sin tener la necesidad de usar
cursores. Gracias

Preguntas similares