SQL Server - Ayuda con funcion que retorna un saldo de una cuenta

 
Vista:

Ayuda con funcion que retorna un saldo de una cuenta

Publicado por Funcion retorna saldo (1 intervención) el 08/12/2017 00:40:26
Buenas Tardes


soy estudiante de ingeniería de sistemas se ha complicado hacer lo siguiente
ocupo ayuda para crear una función para obtener el saldo de una cuenta cumpliendo con los siguiente
Recibe como parámetro:
 el nombre de un cliente y
 el id de su cuenta
y retorna:
 el saldo disponible de ese cliente en esa cuenta:
Si la cuenta es tipo “C”: el saldo disponible es igual al límite de crédito menos el
acumulado de todos los importes de todas las transacciones tipo 2,
Si la cuenta es de tipo “D” el saldo disponible es igual al límite de crédito.
Valida la existencia y correspondencia del nombre del cliente y de su cuenta.

he creado el siguiente script para generar mi base de datos crear mis tablas y llenarlas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
create DataBase DBCuentas
go
use DBCuentas
go
create table TCliente (idClte numeric (4,0) primary key, nomClte varchar(60))
 
create table TCuenta (idCta numeric (6,0) primary key, idClte numeric(4,0), tipoCta varchar(1),limCred numeric(8,2))
 
create table TTransaccion (idTrans numeric (6,0) primary key, idCta numeric (6,0), tipoTrans numeric (1,0), importe numeric (8,2))
 
insert into TCliente values (10,'Emmanuel Villa')
insert into TCliente values (11,'Oribe Peralta')
insert into TCliente values (12,'Raúl Alonso Jiménez')
insert into TCliente values (13,'Luis Gabriel Rey')
insert into TCliente values (14,'Christian Benítez')
 
insert into TCuenta  values (5000,10,'C',10000)
insert into TCuenta  values (5001,10,'D',5000)
insert into TCuenta  values (5002,11,'C',15000)
insert into TCuenta  values (5003,11,'C',20000)
insert into TCuenta  values (5004,11,'D',10000)
insert into TCuenta  values (5005,12,'D',15000)
insert into TCuenta  values (5006,12,'C',10000)
insert into TCuenta  values (5007,13,'D',5000)
insert into TCuenta  values (5008,14,'C',25000)
 
insert into TTransaccion values (33330,5000,1,1000)
insert into TTransaccion values (33331,5000,1,5000)
insert into TTransaccion values (33332,5000,2,3000)
insert into TTransaccion values (33333,5001,1,2000)
insert into TTransaccion values (33334,5001,2,4000)
insert into TTransaccion values (33335,5001,1,5000)
insert into TTransaccion values (33336,5002,1,3000)
insert into TTransaccion values (33337,5002,1,2000)
insert into TTransaccion values (33338,5002,2,5000)
insert into TTransaccion values (33339,5003,1,6000)
insert into TTransaccion values (33340,5003,1,4000)
insert into TTransaccion values (33341,5004,2,3000)
insert into TTransaccion values (33342,5004,1,2000)
insert into TTransaccion values (33343,5005,2,1000)
insert into TTransaccion values (33344,5006,1,6000)
insert into TTransaccion values (33345,5007,2,5000)
 
 
select * From TCliente
 
select * From TCuenta
 
select * From TTransaccion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Ayuda con funcion que retorna un saldo de una cuenta

Publicado por Isaias (4558 intervenciones) el 12/12/2017 08:15:43
Hice un ejercicio, no se en que momento juega el parametro del NOMBRE DE CLIENTE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
declare @idClte numeric (4,0) = 11
declare @nomClte varchar(60) = 'Oribe Peralta'
 
SELECT @nomClte, x.idCta, TipoC - sumtran2 as SaldoTipoC, TipoD - sumtran1 as SaldoTipoD
FROM(
SELECT idClte, idCta, ISNULL(SUM(CASE WHEN tipoCta = 'C' then limCred end),0) AS TipoC,
ISNULL(SUM(CASE WHEN tipoCta = 'D' then limCred end),0) AS TipoD
from  TCuenta
where idClte = @idClte
group by idClte,idCta) AS X
INNER JOIN
(select idCta,ISNULL(SUM(case when tipoTrans = 2 then importe end),0) as sumtran2,
ISNULL(SUM(case when tipoTrans = 1 then importe end),0) as sumtran1
from TTransaccion
group by idCta) AS L
ON X.idCta = L.idCta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar