группа и порядок в MySQL - PullRequest
0 голосов
/ 01 июня 2018

Я должен написать запрос, в котором мне нужен заданный вывод.Я пробовал разные запросы, но не работал.

Фактические данные:

enter image description here

, и мне нужен вывод, подобный: enter image description here

Запросы типа:

SELECT VCD.id,VCD.effective_date, `VCD`.`charge_id`, `C`.`head`, 
`VCD`.`per`, `VCD`.`currency`, `VCD`.`amount`, `VCD`.`remarks` 
FROM `vendor_charge` `VC` INNER JOIN `vendor_charge_details` `VCD` 
ON `VC`.`id` = `VCD`.`vc_id` LEFT JOIN `charges` `C` 
ON `C`.`id` = `VCD`.`charge_id` 
WHERE `VC`.`vendor_id` = '12' AND `VCD`.`effective_date` <= '2018-05-22' 
GROUP BY `VCD`.`charge_id`, `VCD`.`per`, `VCD`.`currency` 
ORDER BY `C`.`head` DESC

и

SELECT VCD.id,VCD.effective_date, `VCD`.`charge_id`, `C`.`head`, 
`VCD`.`per`, `VCD`.`currency`, `VCD`.`amount`, `VCD`.`remarks` 
FROM `vendor_charge` `VC` INNER JOIN `vendor_charge_details` `VCD` 
ON `VC`.`id` = `VCD`.`vc_id` LEFT JOIN `charges` `C` 
ON `C`.`id` = `VCD`.`charge_id` 
WHERE `VC`.`vendor_id` = '12' AND `VCD`.`effective_date` <= '2018-05-22' 
GROUP BY `VCD`.`charge_id`, `VCD`.`per`, `VCD`.`currency` 
ORDER BY `VCD`.`effective_date` DESC

1 Ответ

0 голосов
/ 01 июня 2018

Я думаю, что все, что вам нужно здесь, - это дополнительное соединение с подзапросом, которое находит самое последнее effective_date для каждого charge_id:

SELECT
    VCD.id,
    VCD.effective_date,
    VCD.charge_id,
    C.head,
    VC.per,
    VCD.currency,
    VCD.amount,
    VCD.remarks
FROM vendor_charge VC
INNER JOIN vendor_charge_details VCD
    ON VC.id = VCD.vc_id
INNER JOIN
(
    SELECT charge_id, MAX(effective_date) AS max_effective_date
    FROM vendor_charge_details
    GROUP BY charge_id
) t
    ON VCD.charge_id = t.charge_id AND VCD.effective_date = t.max_effective_date
LEFT JOIN charges C
    ON C.id = VCD.charge_id
WHERE VC.vendor_id = '12' AND VCD.effective_date <= '2018-05-22'
ORDER BY
    C.head DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...