Сумма MYSQL 2 в выражении CASE - PullRequest
0 голосов
/ 30 апреля 2018

Привет, у меня есть следующий запрос

SELECT 
ORG.`id`,

ORG.`organisation_name`,

SFCR.report_date_year 

,CASE 
    -- GWP
    WHEN (QRT_VALUES.`template_id` = 'S.05.01.02.01' AND QRT_VALUES.`row_id` = 'R0110' AND QRT_VALUES.`column_id` = 'C0200') THEN 'gross_written_premiums' 

    WHEN (QRT_VALUES.`template_id` = 'S.05.01.02.02' AND QRT_VALUES.`row_id` = 'R1410' AND QRT_VALUES.`column_id` = 'C0300') THEN 'gross_written_premiums' 

END AS Dimension 
,CASE
    -- GWP
    WHEN (QRT_VALUES.`template_id` = 'S.05.01.02.01' AND QRT_VALUES.`row_id` = 'R0110' AND QRT_VALUES.`column_id` = 'C0200' || 
          QRT_VALUES.`template_id` = 'S.05.01.02.02' AND QRT_VALUES.`row_id` = 'R1410' AND QRT_VALUES.`column_id` = 'C0300') 
    THEN  
        (
            (CASE 
                WHEN (QRT_VALUES.`template_id` = 'S.05.01.02.01' AND QRT_VALUES.`row_id` = 'R0110' AND QRT_VALUES.`column_id` = 'C0200') 
                THEN (QRT_VALUES.`value`) ELSE 0 END)
            +

            (CASE 
                WHEN (QRT_VALUES.`template_id` = 'S.05.01.02.02' AND QRT_VALUES.`row_id` = 'R1410' AND QRT_VALUES.`column_id` = 'C0300') 
                THEN (QRT_VALUES.`value`) ELSE 0 END)
        )

END AS Value,  

ORG.`parent_id` AS `parent_id`

FROM ird_qrt_values AS QRT_VALUES

LEFT JOIN `ird_reports` AS SFCR ON (QRT_VALUES.`report_id` = SFCR.`id` AND SFCR.`report_type_id` = 1)

LEFT JOIN `ird_organisations` AS ORG ON (SFCR.`organisation_id` = ORG.`id` AND SFCR.`report_type_id` = 1)

WHERE 
-- GWP
(QRT_VALUES.`template_id` = 'S.05.01.02.01' AND QRT_VALUES.`row_id` = 'R0110' AND QRT_VALUES.`column_id` = 'C0200') OR

(QRT_VALUES.`template_id` = 'S.05.01.02.02' AND QRT_VALUES.`row_id` = 'R1410' AND QRT_VALUES.`column_id` = 'C0300') AND 
SFCR.`qrt_processed` = 1 

HAVING organisation_name = 'Aviva Plc';

В настоящее время этот запрос дает следующий результат

id      organisation_name       report_date_year        Dimension                       Value
-------------------------------------------------------------------------------------------------------
351     Aviva Plc               2016                    gross_written_premiums          15672717.000
351     Aviva Plc               2016                    gross_written_premiums          9708280.000
351     Aviva Plc               2017                    gross_written_premiums          8234725.034
351     Aviva Plc               2017                    gross_written_premiums          9150979.428

То, что я ищу, - это СУММА из двух чисел в одной строке для каждого года. Смотрите таблицу ниже. Я не уверен, как это сделать в рамках кейса.

id      organisation_name       report_date_year        Dimension                       Value
-------------------------------------------------------------------------------------------------------
351     Aviva Plc               2016                    gross_written_premiums          25380997.000
351     Aviva Plc               2017                    gross_written_premiums          17385704.462

Любая помощь очень ценится. Заранее спасибо.

1 Ответ

0 голосов
/ 30 апреля 2018

Попробуйте это:

SELECT id, organisation_name, report_date_year, Dimension, SUM(Value) Value
FROM
(<Your current Query>) t
GROUP BY
id, organisation_name, report_date_year, Dimension
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...