Получите данные за 2 года в одну строку результатов

0

У меня есть этот запрос:

SELECT BC_PID, Year, Period, 
CASE WHEN Year = 2017 THEN SUM(Allin+Basis+Entry+IFNULL(3CXUsers, 0)) END as '2017', 
CASE WHEN Year = 2018 THEN SUM(Allin+Basis+Entry+IFNULL(3CXUsers, 0)) END as '2018'  
FROM ext_partnertotals WHERE
(Year = '2018' OR Year = '2017') AND Period = 6
GROUP BY BC_PID, Year

В результате получается следующее:
Изображение 174551

Теперь я хочу иметь 2 строки для одного BC_PID в одну строку.
Так что у меня есть номера для 2017 и 2018 для каждого BC_PID в одной строке.
В настоящее время у меня итоговые значения на 2 строки.

Он должен дать:

  BC_PID |Period|2017 |2018
   2.001 |6     |1.744|2.444
 100.003 |6     |0    |0

Проверьте этот SQLfiddle: http://sqlfiddle.com/#!9/4c9b5/1

  • 0
    Возьмите год из списка select и group by
  • 0
    @cf_en тогда 2018 NULL
Теги:

2 ответа

1
Лучший ответ

Тщательно измените вашу скрипку:

SELECT BC_PID, Period,
SUM(CASE WHEN Year = 2017 THEN Allin+Basis+Entry+IFNULL(3CXUsers, 0) ELSE 0 END) as '2017',
SUM(CASE WHEN Year = 2018 THEN Allin+Basis+Entry+IFNULL(3CXUsers, 0) ELSE 0 END) as '2018'
FROM ext_partnertotals
WHERE (Year = '2018' OR Year = '2017') AND Period = 6
GROUP BY BC_PID, Period
  • 1
    Ах, это работает, спасибо человек!
0
SELECT BC_PID, Year, Period, 
CASE WHEN Year IN (2017,2018) 
   THEN SUM(Allin+Basis+Entry+IFNULL(3CXUsers, 0)) END as '2017_8'
FROM ext_partnertotals 
WHERE (Year = '2018' OR Year = '2017') 
AND Period = 6 
GROUP BY BC_PID, Year
  • 0
    Не то, что я ищу братан ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню