powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Один из фильтров в виде группы колонок
6 сообщений из 6, страница 1 из 1
Один из фильтров в виде группы колонок
    #37035063
dizzy1984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть работающий запрос
Код: plaintext
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.
       select sq.ins_reg_num, sq.name, sum(sq.pay_sum) from
       (
       SELECT i.ins_reg_num,
       COALESCE
       (
             COALESCE( cor.CRP_SHORT_NAME, cor.CRP_FULL_NAME ),
             COALESCE( per.PRS_LAST_NAME, '') || ' ' || COALESCE(per.PRS_FIRST_NAME, '') || ' ' || COALESCE(per.PRS_MID_NAME, '')
       ) as name,
             CASE
                     when p.PAY_INCOME =  1  then p.pay_sum
                     else -p.pay_sum
             end as pay_sum
       from
       db2inst.sth_corporation as cor right outer join
       db2inst.sth_person as per right outer join
       DB2INST.STH_KBK as kbk INNER JOIN
       DB2INST.STH_PAY_CHECKSUM AS pcs INNER JOIN
       DB2INST.STH_PAYMENT as p INNER JOIN DB2INST.STH_INSURER AS i ON p.INS_ID=i.INS_ID
       ON p.PCS_ID=pcs.PCS_ID
       ON pcs.KBK_ID = kbk.KBK_ID
       on per.INS_ID = i.INS_ID
       on cor.INS_ID = i.INS_ID
       WHERE
       pcs.PCS_ENTER>='01.07.2010' And pcs.PCS_ENTER<='31.12.2010' And
       kbk.KBK_CODE = '39210202100081000160' and
       i.INS_REG_NUM <=  55009999999  and
       i.CT_ID >=  10  and i.CT_ID <=  31 
       ) as sq
Как видно здесь я использую фильтр kbk.KBK_CODE = '39210202100081000160'. Мне хотелось бы убрать его и сделать 4 колонки для значений поля KBK_CODE '39210202100081000160', '39210202100082000160', '39210202100083000160', '39210202100084000160'. В ms sql я бы использовал кл. слово PIVOT, но db2 не имеет его, поэтому сейчас я выполняю это в виде 4-х запросов с последующей склекой содержимого в excel. Помогите, господа!
...
Рейтинг: 0 / 0
Один из фильтров в виде группы колонок
    #37036492
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
 kbk.KBK_CODE in ('39210202100081000160', '39210202100082000160', '39210202100083000160', '39210202100084000160')
...
Рейтинг: 0 / 0
Один из фильтров в виде группы колонок
    #37036576
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dizzy1984Есть работающий запрос
Код: plaintext
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.
       select sq.ins_reg_num, sq.name, sum(sq.pay_sum) from
       (
       SELECT i.ins_reg_num,
       COALESCE
       (
             COALESCE( cor.CRP_SHORT_NAME, cor.CRP_FULL_NAME ),
             COALESCE( per.PRS_LAST_NAME, '') || ' ' || COALESCE(per.PRS_FIRST_NAME, '') || ' ' || COALESCE(per.PRS_MID_NAME, '')
       ) as name,
             CASE
                     when p.PAY_INCOME =  1  then p.pay_sum
                     else -p.pay_sum
             end as pay_sum
       from
       db2inst.sth_corporation as cor right outer join
       db2inst.sth_person as per right outer join
       DB2INST.STH_KBK as kbk INNER JOIN
       DB2INST.STH_PAY_CHECKSUM AS pcs INNER JOIN
       DB2INST.STH_PAYMENT as p INNER JOIN DB2INST.STH_INSURER AS i ON p.INS_ID=i.INS_ID
       ON p.PCS_ID=pcs.PCS_ID
       ON pcs.KBK_ID = kbk.KBK_ID
       on per.INS_ID = i.INS_ID
       on cor.INS_ID = i.INS_ID
       WHERE
       pcs.PCS_ENTER>='01.07.2010' And pcs.PCS_ENTER<='31.12.2010' And
       kbk.KBK_CODE = '39210202100081000160' and
       i.INS_REG_NUM <=  55009999999  and
       i.CT_ID >=  10  and i.CT_ID <=  31 
       ) as sq
Как видно здесь я использую фильтр kbk.KBK_CODE = '39210202100081000160'. Мне хотелось бы убрать его и сделать 4 колонки для значений поля KBK_CODE '39210202100081000160', '39210202100082000160', '39210202100083000160', '39210202100084000160'. В ms sql я бы использовал кл. слово PIVOT, но db2 не имеет его, поэтому сейчас я выполняю это в виде 4-х запросов с последующей склекой содержимого в excel. Помогите, господа!
Я правильно понял, что у вас есть 4 фиксированных значения поля KBK_CODE, и вы хотите вместо
Код: plaintext
select sq.ins_reg_num, sq.name, sum(sq.pay_sum) from ...
иметь
Код: plaintext
1.
2.
3.
4.
select sq.ins_reg_num, sq.name
, sum(sq.pay_sum) -- только для записей, где kbk.KBK_CODE = '39210202100081000160'
...
, sum(sq.pay_sum) -- только для записей, где kbk.KBK_CODE = '39210202100084000160'
from...
?
Или набор этих значений kbk.KBK_CODE и их количество может быть разное?
...
Рейтинг: 0 / 0
Один из фильтров в виде группы колонок
    #37041905
dizzy1984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark Barinstein,

На выходе мне надо 6 колонок sq.ins_reg_num, sq.name, sum(sq.pay_sum)(для 39210202100081000160), sum(sq.pay_sum)(для 39210202100082000160), sum(sq.pay_sum)(для 39210202100083000160), sum(sq.pay_sum)(для 39210202100084000160). Спасибо за ответ!
...
Рейтинг: 0 / 0
Один из фильтров в виде группы колонок
    #37042110
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dizzy1984На выходе мне надо 6 колонок sq.ins_reg_num, sq.name, sum(sq.pay_sum)(для 39210202100081000160), sum(sq.pay_sum)(для 39210202100082000160), sum(sq.pay_sum)(для 39210202100083000160), sum(sq.pay_sum)(для 39210202100084000160). Спасибо за ответ!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
       select sq.ins_reg_num, sq.name
        , sum(case KBK_CODE when '39210202100081000160' then sq.pay_sum end) s1
       ...
       , sum(case KBK_CODE when '39210202100084000160' then sq.pay_sum end) s4 
       from
       (
       SELECT i.ins_reg_num,
       COALESCE
       (
             COALESCE( cor.CRP_SHORT_NAME, cor.CRP_FULL_NAME ),
             COALESCE( per.PRS_LAST_NAME, '') || ' ' || COALESCE(per.PRS_FIRST_NAME, '') || ' ' || COALESCE(per.PRS_MID_NAME, '')
       ) as name,
             CASE
                     when p.PAY_INCOME = 1 then p.pay_sum
                     else -p.pay_sum
             end as pay_sum
        , kbk.KBK_CODE 
       from ...
       WHERE
       pcs.PCS_ENTER>='01.07.2010' And pcs.PCS_ENTER<='31.12.2010' 
        And kbk.KBK_CODE in ('39210202100081000160', '39210202100082000160', '39210202100083000160', '39210202100084000160') 
       and i.INS_REG_NUM <= 55009999999 and
       i.CT_ID >= 10 and i.CT_ID <= 31
       ) as sq
...
Рейтинг: 0 / 0
Один из фильтров в виде группы колонок
    #37043487
dizzy1984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, после праздников обязательно проверю
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Один из фильтров в виде группы колонок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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