SQL查询向客户显示这些帐户在其帐户中有10个或更多存款

时间:2016-02-29 16:25:34

标签: sql sql-server

我非常怀疑在哪里我必须进行查询,以显示客户在此期间超过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]

bank account

tablesaccount

1 个答案:

答案 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