Создать столбцы на основе значений столбцов - PullRequest
0 голосов
/ 15 февраля 2019

У меня странная проблема с настройкой SELECT, поэтому я получаю поля «DEMO», «PILOT» и «LIVE» в трех новых столбцах для каждого «PRODUCT_NAME».Вот код, который я сейчас использую для получения моих данных:

    SELECT 
    `ct`.`COUNTRY_CODE` AS `COUNTRY_CODE`,
                COUNT(CASE WHEN
            ((`lt`.`TERM_ID` = 3)
                OR (`lt`.`TERM_ID` = 5)
                OR (`lt`.`TERM_ID` = 6)
                OR (`lt`.`TERM_ID` = 10)
                OR (`lt`.`TERM_ID` = 11)
                OR (`lt`.`TERM_ID` = 15)
                OR (`lt`.`TERM_ID` = 17)
                OR (`lt`.`TERM_ID` = 20)
                OR (`lt`.`TERM_ID` = 22)
                OR (`lt`.`TERM_ID` = 19)
                OR (`lt`.`TERM_ID` = 18))
        THEN
            'DEMO' END) AS 'DEMO',
    COUNT(CASE WHEN (`lt`.`TERM_ID` = 7) THEN 'PILOT' END) AS 'PILOT',
    COUNT(CASE WHEN ((`lt`.`TERM_ID` = 1)
                OR (`lt`.`TERM_ID` = 2)
                OR (`lt`.`TERM_ID` = 4)
                OR (`lt`.`TERM_ID` = 8)
                OR (`lt`.`TERM_ID` = 9)
                OR (`lt`.`TERM_ID` = 13)
                OR (`lt`.`TERM_ID` = 14)
                OR (`lt`.`TERM_ID` = 16)
                OR (`lt`.`TERM_ID` = 23))
        THEN
            'LIVE' END) AS 'LIVE',
        COUNT(CASE WHEN (`li`.`LICENCE_START_DATE` < '2018-07-01') THEN 'OLD' END) AS 'OLD',
        `pr`.`PRODUCT_NAME` AS `PRODUCT_NAME`
FROM
    (((`country` `ct`
    JOIN `licence_term` `lt`)
    JOIN `product` `pr`)
    JOIN `licence` `li`)
WHERE
    ((`li`.`LICENCE_START_DATE` <= LAST_DAY((CURDATE() - INTERVAL 1 MONTH)))
        AND (NOT ((`li`.`LICENCE_ID` LIKE 'OCS%')))
        AND (NOT ((`pr`.`PRODUCT_NAME` like 'OCS%')))
        AND ((`li`.`LICENCE_STATUS` = 'ACTIVE') OR (`li`.`LICENCE_STATUS` = 'ISSUED'))
        AND (`ct`.`COUNTRY_ID` = `li`.`COUNTRY_ID`)
        AND (`pr`.`PRODUCT_CODE` = `li`.`PRODUCT_CODE`)
        AND (`lt`.`TERM_ID` = `li`.`LICENCE_TERM_ID`))
GROUP BY `ct`.`COUNTRY_NAME` , `pr`.`PRODUCT_NAME`

Итак, я попытался добавить для каждого случая, когда элемент управления на имя выглядит так:

`pr`.`PRODUCT_NAME` LIKE 'whatever'

Иочевидно, удвоил количество предложений «случай, когда» для получения данных все в строке.Но, похоже, он не работает правильно, поскольку дает мне те же данные, что и другие исходные данные.

Вкратце: мне нужно знать для каждой страны «демо», «пилот» и «вживую», разделенный на 7 столбцов.

Если это поможет, я покажу вам, как выглядит таблица на MySQL: Таблица

...