SQL общая сумма, потраченная на клиента на книги в течение данного месяца и года - PullRequest
0 голосов
/ 16 апреля 2020

Я довольно новичок в SQL и пытаюсь создать хранимую процедуру, которая позволяет пользователю вводить месяц (int) и год (int) в качестве параметров, где он затем отображает CustomerNumber, CustomerName и TotalAmountSpent за указанный месяц и год. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я выполняю свою процедуру, она не показывает фактическую сумму для каждого клиента. Он показывает несколько CustomerNumbers и CustomerNames, которые являются одним и тем же лицом, и в нем перечислены все отдельные суммы, которые они потратили за этот период времени. Он должен просто показывать ОДИН результат на клиента и иметь фактическую сумму. Я предоставлю свой код, чтобы вы могли на него посмотреть, любая помощь будет принята с благодарностью! Я почти уверен, что это просто оператор SELECT, который не верен, потому что мои строки ошибок и все остальное в SPRO C, кажется, работает так, как должно.

    CREATE PROCEDURE CustomerBooks
    @SaleMonth          int,
    @SaleYear           int
AS

    IF @SaleMonth IS NULL OR @SaleYear IS NULL
    BEGIN
        RAISERROR('You must enter the desired month and year to display the customer sale information', 16, 1)
    END
    ELSE
    BEGIN
        IF @SaleMonth < 1 OR @SaleMonth > 12
        BEGIN
            RAISERROR ('That Sale Month is not valid', 16, 1)
        END
        ELSE
        BEGIN
            IF @SaleMonth > MONTH(GETDATE())
            BEGIN
                RAISERROR ('That Sale Month is in the future', 16, 1)
            END
            ELSE
            BEGIN
                IF @SaleYear > YEAR(GETDATE())
                BEGIN
                    RAISERROR ('That Sale Year is in the future', 16, 1)
                END
                ELSE
                BEGIN
                    SELECT C.CustomerNumber AS 'Customer Number', LastName + ', ' + FirstName AS 'CustomerName', SUM(Subtotal) AS 'Total Amount Spent'
                    FROM Customers C
                        INNER JOIN Sales S ON S.CustomerNumber = C.CustomerNumber
                        GROUP BY Date, C.CustomerNumber, LastName, FirstName
                        HAVING Month(Date) = @SaleMonth AND YEAR(Date) = @SaleYear                      
                END
            END
        END
    END
RETURN
GO

Это также изображение результатов, которые я получаю в своей таблице при выполнении процедуры: https://drive.google.com/file/d/1g5V3ojT1K-U5LCdK-KftxHgRfdi8NhNU/view?usp=sharing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...