У меня странная проблема с настройкой 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: Таблица