Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / предыдущая дата / 4 сообщений из 4, страница 1 из 1
03.04.2019, 08:14
    #39795498
1dva3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предыдущая дата
Добрый день!!

Есть SQL- запрос, где я получаю данные за один месяц. (при вводе любого месяца)

Как получать данные за предыдущие месяца по умолчанию, т.е при вводе Апрель, чтоб колонки Январь, Февраль, Март были заполнены и запрашиваемый месяц(Апрель). Так как Май, Июнь и т.д еще не наступил Столбцы остаются пустыми. Как только наступает Май Заполняются первые 4месяца + Май и т.д

Сам запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
select filial_id,region_id, reg,count(case when sd like '12.2018'
                                                     then 1 end) dec2018,
                                                     count(case when sd like '01.2019'
                                                     then 1 end) jan2019,
                                                     count(case when sd like '02.2019'
                                                     then FTTH end) feb2019,
                                                     count(case when sd like '03.2019'
                                                     then FTTH end) mar2019,
                                                     count(case when sd like '04.2019'
                                                     then FTTH end) apr2019,
                                                     count(case when sd like '05.2019'
                                                     then FTTH end) may2019,
                                                     count(case when sd like '06.2019'
                                                     then FTTH end) jun2019,
                                                     count(case when sd like '07.2019'
                                                     then FTTH end) jul2019,
                                                     count(case when sd like '08.2019'
                                                     then FTTH end) aug2019,
                                                     count(case when sd like '09.2019'
                                                     then FTTH end) sep2019,
                                                     count(case when sd like '10.2019'
                                                     then FTTH end) oct2019,
                                                     count(case when sd like '11.2019'
                                                     then FTTH end) nov2019
                                                     from(
select  filial_id, reg,region_id, sd,FTTH from
(select cs.id filial_id,t.region_id region_id, trim(r.name) reg,  to_char(od.end_sysdate, 'mm.yyyy')sd,
 count(case
             when od.action_id in (5, 7) and
                  dg.id = decode(cs.id, 3, 24, 13, 33, 4, 37, 11, 24, -1) and
                  (lower(ct.name) like '% net %' or
                  lower(ct.name) like '%idnet %' or
                  lower(ct.name) like '%fttx%') then
              ct.name
           end)FTTH         
from db.order_device             od,
       db.abonent_group            ag,
       db.abonent                  a,
       db.region                   r,
       db.town                     t,
       db.device_group             dg,
       db.priority                 pr,
       db.report_date              rd,
       db.action                   ac,       
       db.connect_type             ct,
       db.budget                   b,
       db.sap_client               sap,
       db.crm_server               cs
 where a.budget_id = b.id
   and sap.id = b.sap_client_id
   and od.abonent_group_id = ag.id
   and ct.id = od.new_connect_type_id   
   and a.id = od.abonent_id
   and r.id = t.region_id
   and t.id = a.town_id
   and dg.id = od.device_group_id
   and ac.id = od.action_id
   and sap.note in
       ('AFL10', 'AFL20', 'AFL30', 'UD10', 'UD20', 'UD30', 'UKO10', 'UKO20',
        'UKO30', 'FRN102', 'FRN202', 'FRN302')
   and pr.id = od.priority_id
   and pr.id != 2
   and rd.id in (1,2,3,4,5,6,7,8,9,10,11,12)-- МЕСЯЦ
  
   and od.end_sysdate between rd.from_date and rd.to_date
 group by cs.id,          
          region_id,
          r.name,
          od.end_sysdate
          
 ) group by filial_id,reg,region_id,sd,ftth)
group by filial_id,region_id, reg
...
Рейтинг: 0 / 0
03.04.2019, 09:13
    #39795543
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предыдущая дата
1dva3я получаю данные за один месяц. (при вводе любого месяца)И куда именно, позвольте полюбопытствовать, Вы его вводите?

Если Вам нужна помощь в составлении запроса - как минимум следует дать DDL исходных таблиц, пример наполнения и требуемый на именно этих данных результат. Либо текстами скриптов (проверить!!!), либо (предпочтительно) в форме fiddle.
...
Рейтинг: 0 / 0
03.04.2019, 09:19
    #39795557
1dva3
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предыдущая дата
Akina,

rd.id=&p_report_date_id
...
Рейтинг: 0 / 0
03.04.2019, 12:02
    #39795693
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
предыдущая дата
В Вашем запросе нет такого фрагмента.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / предыдущая дата / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]