В приведенной ниже настройке таблицы вы увидите, что данные суммы разбиты на различные строки в таблице. Я создаю представление, где я хочу разбить это, где каждое значение Amount находится в своем собственном поле, основанном на поле CreatedDt. Таким образом, поля будут Fee1, Fee2, Fee3 и так далее, если будет больше сборов. У меня проблемы с придумыванием логики для этого.
Я пытался использовать первое и последнее значение, минимальное и максимальное значения, различные операторы case, и я не вижу успеха ни в одном из этих методов.
SELECT
`afpd`.`AppsID` AS `AppID`,
sum(case when ( `afpd`.`TxnTypeId` = 2 ) then `afpd`.`Amount` end) as fee1
FROM
(
( `appfee` `afpd` JOIN `tracking` `tra` ON ( ( `afpd`.`AppsID` = `tra`.`tci_application_id` ) ) )
JOIN `faap` `fad` ON ( ( `afpd`.`AppsID` = `fad`.`ApplicationID` ) )
)
WHERE
( `tra`.`tci_fee_submitted` = 11 )
GROUP BY
`afpd`.`AppsID`
Настройка таблицы:
TXNID AppID TXnType Amount CreatedDT
1429513 3827558 2 -29.00 2017-11-01 06:18:00
1388653 3827558 2 -29.00 2017-10-15 06:24:00
1811017 3827558 2 -31.00 2018-05-02 07:07:00
Выше показано, как выглядит таблица, куда я извлекаю данные. Как вы можете видеть, суммы хранятся в виде строк, и я хочу взять это и создать поля полей: Fee1, Fee2, Fee3 и иметь Fee1 как последний CreatedDt, Fee2 будет средним CreatedDt, а Fee3 будет самым последним CreateDt.