У меня есть данные таблицы, как показано ниже, которые поступают из разных таблиц. Я хочу взять максимальное значение из 4-го столбца, только если 3-й столбец имеет значение «долг», а 1 column(DATE)
имеет максимальное значение. Конечное значение основано на MAX(DATE)
, а не MAX(PRICE)
. поэтому на простом языке он приходит таким образомВыбор значения MAX для одного столбца на основе двух других столбцов с одним столбцом, имеющим значение MAX
IF(MAX(DATE) && TYPE = 'debt'){
MAX(PRICE);
}
Вот изображение просмотра данных.
и текущий запрос я использую ниже
SELECT
MAX(CASE WHEN PAYMENTS.PAYMENT = 'debt' AND RECEIPTS.DATENEW THEN PAYMENTS.TOTAL END) AS TAKENDEBT,
(CASE WHEN PAYMENTS.PAYMENT = 'debtpaid' THEN PAYMENTS.TOTAL END) AS GIVENDEBT,
MAX(CASE WHEN PAYMENTS.PAYMENT = 'debt' THEN RECEIPTS.DATENEW END) AS TAKENDATE,
MAX(CASE WHEN PAYMENTS.PAYMENT = 'debtpaid' THEN RECEIPTS.DATENEW END) AS GIVENDATE,
(MAX(CASE WHEN PAYMENTS.PAYMENT = 'debt' THEN PAYMENTS.TOTAL END) + SUM((CASE WHEN PAYMENTS.PAYMENT = 'debtpaid' THEN PAYMENTS.TOTAL END))) AS DUE,
CASE WHEN PAYMENTS.PAYMENT = 'debt' OR PAYMENTS.PAYMENT = 'debtpaid' THEN CUSTOMERS.NAME END AS CUSTOMER
FROM RECEIPTS
INNER JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID
INNER JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT
INNER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID
WHERE
(PAYMENTS.PAYMENT = 'debt'
OR PAYMENTS.PAYMENT = 'debtpaid')
GROUP BY CUSTOMER
ORDER BY DUE DESC
, который дает мне выход, как показано ниже, с красным кругом, а мне нужно значение в зеленом круге. Это означает, что он получает значение на основе MAX (PRICE), в то время как мне нужно на основе MAX (DATE), затем MAX (PRICE), потому что может быть несколько значений за ту же дату.
И ПОЖАЛУЙСТА НЕ СПРАШИВАЙТЕ МЕНЯ СТАВИТЬ ДАННЫЕ В скрипке ВЕЩИ, ЕГО беспорядок DATABASE мне удалось с этим запросом и теперь хочу, чтобы быть на тот же структуру. БЛАГОДАРЯ
Не в состоянии использовать подзапрос, должен быть большой беспорядок. Как я уже сказал, хочу сохранить структуру запроса таким же образом с помощью оператора CASE. – Saqib