У меня есть SQL-запрос, который должен показывать мне последний платеж каждого клиента, но он показывает мне каждый платеж, который сделал каждый клиент. Я провел день на этом, и я собираюсь сдаться. Я хочу попытаться сгруппировать свой отчет по электронной почте клиента, а затем из каждой группы клиентских платежей вернуть каждой группе самую последнюю дату. Это должно показать мне последние платежи каждого клиента в одном отчете.
Я собираю информацию из нескольких таблиц. Теоретически клиенты могут иметь одинаковое имя, номер или платить одинаковую сумму. Но уникальным полем в этом будет электронная почта. Клиент также может обновить свою учетную запись, поэтому группа платежей, совершаемых клиентом, может не иметь одинаковых значений. Так что, если мы вернем самую последнюю дату, она покажет их текущий последний платеж.
Помогите мне stackoverflow, ваша единственная надежда.
SELECT
AccountTypes.Name AS AccountType,
CONVERT(nvarchar, PaymentHistory.DateCreated, 23) AS Prev_Billing_Date,
PaymentHistory.Amount AS Amount,
Users.FirstName AS FName,
Users.LastName AS LName,
Users.Phone AS Phone,
Users.Email AS Email
FROM
AccountTypes
INNER JOIN
Accounts
INNER JOIN
AccountStatus ON Accounts.StatusID = AccountStatus.ID
INNER JOIN
PaymentHistory ON Accounts.ID = PaymentHistory.AccountID
ON AccountTypes.ID = Accounts.AccountTypeID
INNER JOIN
Users
INNER JOIN
UserAccounts ON Users.ID = UserAccounts.UserID
ON Accounts.ID = UserAccounts.AccountID
WHERE
(UserAccounts.IsOwner = 1) AND
(AccountStatus.Name = 'Paid') AND
(Accounts.AccountTypeID = 2 OR
Accounts.AccountTypeID = 3 OR
Accounts.AccountTypeID = 4 OR
Accounts.AccountTypeID = 5)
GROUP BY
AccountTypes.Name,
PaymentHistory.DateCreated,
PaymentHistory.Amount,
Users.FirstName,
Users.LastName,
Users.Phone,
Users.Email
ORDER BY
AccountType DESC, Email, Prev_Billing_Date DESC;