НАДЕЛЕНИЕ ПО МАКСИМАЛЬНОЙ ДАТЕ? - PullRequest
0 голосов
/ 10 марта 2020

Я хочу показать только дату последнего платежа. В настоящее время Запрос просматривает все суммы транзакций, которые меньше нуля (что означает, что они заплатили) и показывает соответствующую дату. Но я просто хочу показать последнюю или максимальную дату.

SELECT DISTINCT     RMCUST.CUST_NAME AS 'Customer',
                    SUM(RMDET.TRAN_AMT - RMDET.TRAN_AMT_APPLIED)
                    OVER (PARTITION BY RMCUST.CUST_NAME)
                    AS 'Total Balance',
                    CASE WHEN RMDET.TRAN_AMT < 0
                    THEN MAX(RMDET.TRAN_DATE)   
                    ELSE ''     
                    END
                    AS 'Last Payment'
FROM                RMCUST (NOLOCK)
INNER JOIN          RMCUSTZ (NOLOCK) ON RMCUSTZ.CUST_CODE = RMCUST.CUST_CODE
INNER JOIN          RMDET (NOLOCK) ON RMDET.CUST_CODE = RMCUST.CUST_CODE
WHERE               RMCUSTZ.AR_BALANCE !=0
GROUP BY            RMCUST.CUST_NAME,
                    RMDET.TRAN_AMT,
                    RMDET.TRAN_AMT_APPLIED,
                    RMDET.TRAN_DATE
ORDER BY            'Customer'

Вывод:

Customer                        Total Balance   Last Payment
-----------------------------------------------------------------------
135 PRIME                       462.66          1900-01-01 00:00:00.000
71 ABOVE                        3617.60         1900-01-01 00:00:00.000
71 ABOVE                        3617.60         2020-01-20 00:00:00.000
71 ABOVE                        3617.60         2020-02-14 00:00:00.000
71 ABOVE                        3617.60         2020-02-20 00:00:00.000
71 ABOVE                        3617.60         2020-02-28 00:00:00.000
ABERNETHYS MUSIC CENTER         1014.60         1900-01-01 00:00:00.000
AC HOTEL                        158.50          1900-01-01 00:00:00.000
AC HOTEL                        158.50          2020-01-03 00:00:00.000
AC HOTEL                        158.50          2020-01-10 00:00:00.000
AC HOTEL                        158.50          2020-01-29 00:00:00.000
AC HOTEL                        158.50          2020-02-04 00:00:00.000

1 Ответ

2 голосов
/ 10 марта 2020

Я думаю, что вам нужен запрос в форме:

SELECT
  CustomerName,
  SUM(tranAmount) as Balance,
  MAX(CASE WHEN TranAmount < 1 THEN TranDate END) as MostRecentPayment
FROM
  table 
GROUP BY 
  CustomerName

Чтобы предоставить сводку по каждому клиенту без повторяющихся строк

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