Запросите таблицу, чтобы данные в одном столбце могли отображаться как разные поля - PullRequest
0 голосов
/ 28 мая 2018

У меня есть таблица, в которой хранятся данные о работе с клиентами.Таблица / представление имеет следующую структуру.

    userid  calls_received    calls_answered    calls_rejected   call_date  
-----------------------------------------------------------------------  
    1030        134              100              34             28-05-2018  
    1012        140              120              20             28-05-2018  
    1045        120              80               40             28-05-2018  
    1030        99               39               50              28-04-2018  
    1045        50               30               20             28-04-2018  
    1045        200              100              100            28-05-2017  
    1030        160               90              70             28-04-2017  
    1045        50               30               20             28-04-2017    

Это пример данных.Данные хранятся на дневной основе.
Мне нужно создать отчет в программном обеспечении дизайнера отчетов, в котором вводится дата.Когда пользователь выбирает дату, например,28/05/2018.Эта дата отправляется как параметр $ {call_date}.Я должен запросить представление таким образом, чтобы результат выглядел так, как показано ниже.Если пользователь выбирает дату 28/05/2018, то данные от 28/04/2018 и 28/05/2017 должны отображаться бок о бок, как показано в столбце ниже.

    userid | cl_cur | ans_cur | rej_cur |success_percentage |diff_percent|position_last_month| cl_last_mon | ans_las_mon | rej_last_mon |percentage_lm|cl_last_year | ans_last_year | rej_last_year
    1030   | 134    |  100    |  34     |      74.6 %       |  14%       |   2               |      99     |   39        |      50      |  39.3%      | 160         |  90           |  70   
    1045   | 120    |  80     |  40     |      66.6%        |  26.7%     |     1             |      50     |   30        |      20      |   60%       | 50          |  30           |  20   

Цель этого запроса - показать данные выбранного дня, данные за тот же день предыдущего месяца и за тот же день предыдущих лет в столбцах, чтобы пользователь мог посмотреть и сравнить.Здесь результат упорядочен по процентам (ans_cur / cl_cur) выбранного дня в порядке убывания рассчитанного процента и показан в столбце success_percentage.
Столбец position_last_month - это позиция этого конкретного сотрудника в предыдущем месяце, когда он упорядочен в порядке убыванияпроцент.В этом примере идентификатор пользователя 1030 находился на 2-й позиции в прошлом месяце, а идентификатор пользователя 1045 на 1-й позиции в прошлом месяце.Точно так же я должен рассчитать это также для года.
Также есть поле с именем diff_percent, которое вычисляет разницу в процентах между человеком, который был в том же положении в прошлом месяце. То же самое я должен сделать в прошлом году.Как я могу достичь этого результата. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 28 мая 2018

ЭТО ОТВЕТЫ НА ОРИГИНАЛЬНУЮ ВЕРСИЮ ВОПРОСА.

Один метод - это join:

select t.user_id, 
       t.calls_received as cr_cur, t.calls_answered as ca_cur, t.calls_rejected as cr_cur,
       tm.calls_received as cr_last_mon, tm.calls_answered as ca_last_mon, tm.calls_rejected as cr_last_mon,
       ty.calls_received as cr_last_year, ty.calls_answered as ca_last_year, ty.calls_rejected as cr_last_year
from t left join
     t tm
     on tm.userid = t.userid and
        tm.call_date = dateadd(month, -1, t.call_date) left join
     t ty
     on ty.userid = t.userid and
        tm.call_date = dateadd(year, -1, t.call_date)
where t.call_date = ${call_date};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...