我非常怀疑在哪里我必须进行查询,以显示客户在此期间超过10个存款大于或等于50,000,但不会离开我,我确定我的脚本是非常错误的:< / p>
我需要的咨询是:进行查询以获取具有客户端名称的帐户。从2016年1月至日期金额超过10美元且存款金额超过或等于50,000.00美元的账户。
这是我的剧本:
DECLARE @NombreCliente VARCHAR(100)
DECLARE @ApellidoCliente VARCHAR(100)
DECLARE @CantidadCuenta INT
DECLARE @SumaMonto DECIMAL
DECLARE @FechaInicio VARCHAR(10)
SET @NombreCliente = 'Name'
SET @ApellidoCliente = 'LastName'
SET @CantidadCuenta =
(
SELECT COUNT(b.ClienteId) FROM [dbo].[Clientes] a
INNER JOIN [dbo].[CuentasBancarias] b
ON a.ClienteId = b.ClienteId
WHERE a.Nombre = @NombreCliente and a.Apellidos = @ApellidoCliente
)
SELECT @CantidadCuenta
IF @CantidadCuenta >= 10
BEGIN
SET @SumaMonto =
(
SELECT SUM(a.Monto) FROM [dbo].[Depositos] a
INNER JOIN [dbo].[CuentasBancarias] b
ON a.CuentaId = b.CuentaId
INNER JOIN [dbo].[Clientes] c
ON b.ClienteId = c.ClienteId
WHERE c.Nombre = @NombreCliente and c.Apellidos = @ApellidoCliente
and a.FechaMovimiento >= '2016-02-01' and a.FechaMovimiento <= GETDATE()
)
SELECT @SumaMonto
SELECT @CantidadCuenta
IF @SumaMonto >= 50000
BEGIN
SELECT * FROM [dbo].[Clientes] a
INNER JOIN [dbo].[CuentasBancarias] b
ON a.ClienteId = b.ClienteId
WHERE a.Nombre = @NombreCliente and a.Apellidos = @ApellidoCliente
END
IF @SumaMonto < 50000
BEGIN
RAISERROR('No hay clientes con un monto superior a $50,000.00',16,1)
END
END
IF @CantidadCuenta < 10
BEGIN
RAISERROR('No hay clientes con más de 10 cuentas',16,1)
END
有办法解决这个案子吗? 这些表按顺序排列:
1) [dbo].[Clientes]
2) [dbo].[CuentasBancarias]
3) [dbo].[Depositos]
答案 0 :(得分:1)
此?
SELECT c.ClienteID, SUM(a.Monto) FROM [dbo].[Depositos] a
INNER JOIN [dbo].[CuentasBancarias] b
ON a.CuentaId = b.CuentaId
INNER JOIN [dbo].[Clientes] c
ON b.ClienteId = c.ClienteId
WHERE a.FechaMovimiento >= '2016-02-01' and a.FechaMovimiento <= GETDATE()
and a.Monto >= 50000
GROUP BY c.ClienteID
HAVING COUNT(a.ID) > 10