Конструктор отчетов. Отчёт

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (25)

просмотр истории страницы


Из командной сторки запросы выполняются при помощи утилиты sqlexec таким образомsqlexec "текст запроса" sqlexec.


h6. Дополнительные моменты

Вывод на экран в виде списка sqlexec "set list on ; текст запроса"

Вывод на экран русских символов - добавьте в конец строки. \| iconv \-f cp1251

Запись в файл, для того чтобы забрать его по WinSCP / SCP позже: > /tmp/file

h2. Примеры:
from PAY_LOG PL
left join USERS U on PL.USER_ID_IN = U.ID
where PL.MSG_OUT = 'ACCEPTED' and PL.OPERATOR_DATE_IN >= '2013.01.01' '2013-01-01'
group by U.ID, U.CONTRACT_NUMBER, U.IDENTIFY
{code}
{code}

*Пример 45. Список должников абонентов с последней оплатой (ФИО,Логин,Договор,Дата последнего платежа,Сумма последнего платежа,Текущий баланс)*

Запрос:
{code}
SET TERM ^ ;
create procedure REP_FINOPER_LAST1 (
OP_TYPE_IN integer)
returns (
from FINANCE_OPERATIONS
where OP_ID = :TMP_OP_ID
and DESCR not like '%Обещанный платеж%'
order by OP_ID desc
into :OP_ID,
suspend;
end

end^
SET TERM ; ^
u.contract_number as "Договор",
tp.plan_name as "Тариф",
sum(FO.OP_SUMMA)/10000000000.00 as "Расход" "Приход"
from users u
left join tarif_plan tp on u.TARIFF_ID_CACHE=tp.plan_id
left join finance_operations fo on u.id=fo.USER_ID
where (fo.op_type<>2 and fo.op_type<>3) and (fo.OP_DATE between '2015-01-01' and '2015-07-01')
where fo.op_type=2 and (fo.OP_DATE between '2015-01-01' and '2015-07-01')
group by U.IDENTIFY,U.CONTRACT_NUMBER,tp.plan_name
{code}
{code}

*Пример 93. * *Список итоговой суммы все{*}{color:#333333}{*}х активированных карт по{*}{color} *выбранной группе и времени*
*Пример 93. * \*Список итоговой суммы все{*}{color:#333333}{*}х активированных карт по{*}{color} *выбранной группе и времени с учётом включенных папок в папке 656*
{code}
select sum(card_series.card_value)/10000000000 as ALL_PERIOD_SUM FROM CARDS
FROM CARDS LEFT JOIN CARD_SERIES ON CARDS.SERIES_NO = card_series.SERIES_NO
left join users on users.id=CARDS.user_id
where users.parid in (select GROUP_ID from GLN_RECURSIVE_GROUP_WALK(656))
left join users on usDS.user_id where parid=246 and cards.date_used > '2012-12-01 00:00:00'
and cards.date_used < '2013-01-01 00:00:00' and cards.date_used is not null
and cards.date_used is not null
{code}
=======
*Пример 94. Дата последнего платежа всех пользователей в группе*
{code}select distinct
users.IDENTIFY as "ФИО",
users.login as "Логин",
users.sms as "Телефон",
AV.ATTRIBUTE_VALUE as "Адрес",
max(FINANCE_OPERATIONS.OP_DATE) as "Дата последнего платежа"
from users
left join FINANCE_OPERATIONS
on users.id=FINANCE_OPERATIONS.USER_ID
and FINANCE_OPERATIONS.OP_TYPE=2
left join ATTRIBUTE_VALUES AV on ( Users.ID = AV.USER_ID and AV.ATTRIBUTE_ID = 3)
where users.parid=8
and users.deleted=0
group by users.IDENTIFY, users.sms, users.login,AV.ATTRIBUTE_VALUE
Отчет {code}
Отчеты
*Пример 95. Отчет для ФСБ. Список пользователей в формате (IP, логин, ФИО, ИНН, Дата рождения, Прописка, Серия паспорта, Номер, Дата выдачи, Кем выдан, Дата подключения, Дата отключения, Номер телефона, Статус)*
{code:lang=sql}
select
uf_ip2string(U.IP) as "IP",
U.LOGIN as "Логин",
U.IDENTIFY as "ФИО",
AV4.ATTRIBUTE_VALUE as "ИНН",
AV3.ATTRIBUTE_VALUE as "Дата рождения",
AV15.ATTRIBUTE_VALUE as "Прописка",
AV14.ATTRIBUTE_VALUE || ' ' ||
AV13.ATTRIBUTE_VALUE || ' ' ||
AV16.ATTRIBUTE_VALUE || ' ' ||
AV17.ATTRIBUTE_VALUE as "Паспортные данные",
U.CREATE_DATE as "Дата подключения",
(select max(ao1.op_time) from audit_operations ao1 where ao1.object_id=u.id and ao1.descr like '%Отключен=1' ) as "Дата отключения",
AV1.ATTRIBUTE_VALUE as "Номер телефона",
U.ENABLED as "Статус (1-подключен,0-отключен)"
from users U
left join attribute_values av1 on U.ID=AV1.user_id and AV1.attribute_id=1
left join attribute_values av4 on U.ID=AV4.user_id and AV4.attribute_id=4
left join attribute_values av13 on U.ID=AV13.user_id and AV13.attribute_id=13
left join attribute_values av14 on U.ID=AV14.user_id and AV14.attribute_id=14
left join attribute_values av15 on U.ID=AV15.user_id and AV15.attribute_id=15
left join attribute_values av16 on U.ID=AV16.user_id and AV16.attribute_id=16
left join attribute_values av17 on U.ID=AV17.user_id and AV17.attribute_id=17
left join attribute_values av3 on U.ID=AV3.user_id and AV3.attribute_id=3
where end_user=1 and u.id<100000
{code}

*Пример 96. Свободные IP из пулов адресов (IP, имя пула, состояние пула - включен(1)/выключен(0))*
{code:lang=sql}
select uf_ip2string(pc.ip) as "IP",
ipp.name as "POOL",
ipp.enabled as "Pool On(1)/Off(0)"
from pull_cache pc
left join ip_pull ipp on ipp.pull_id = pc.pull_id
where pc.user_id is null
order by pc.pull_id, pc.ip
{code}
*Пример 97. Абоненты с не уникальными snat_ip&nbsp;**(ID, SNAT_IP)*
{code:lang=sql}
select id,
uf_ip2string(snatip_cache) as "SNAT_IP"
from users
where uf_ip2string(snatip_cache) in
(select uf_ip2string(snatip_cache) from users group by uf_ip2string(snatip_cache) having count(*)>1)
and server=0
order by snatip_cache desc
{code}

*Пример 98. Списание платы за выбранные по id (ruleset_no) доп услуги за определенный период (ФИО, Услуга, Количество дней, Списано руб.)*
{code:lang=sql}
select u.identify as "ФИО",us.name as "Услуга",count(ruleset_no) as "Количество дней",sum(s.session_credit)/10000000000 as "Списано, руб."
FROM sessions s
left join users u on s.id=u.id left join usluga us on -us.id=s.ruleset_no
where s.ruleset_no in (-31,-35,-37,-38,-42,-43,-44) and
(s.date_in between '2017-02-01' and '2017-02-28')
group by s.id,u.identify,us.name
order by u.identify
{code}

*Пример 99. Список подключенных услуг у конкретного абонента с указанным логином (Услуга)*
{code:lang=sql}
select us.name as "Услуга"
from users_usluga uu
left join users u on uu.user_id=u.id
left join usluga us on uu.USLUGA_ID=us.id
where u.login='pupkin'
{code}

*Пример 100. Список приходов абонентов на конкретном тариф за указанный период*
{code:lang=sql}
select sum(FO.OP_SUMMA)/10000000000.00 as "Сумма"
from finance_operations fo
left join users u on u.id=fo.USER_ID
where fo.op_type=2 and u.TARIFF_ID_CACHE=37 and OP_DATE between '2016-09-01' and '2016-10-01'
{code}

*Пример 101. Список приходов абонентов через платежные системы за указанный период с указанием группы абонентов (папки) со всеми подгруппами и с Итоговой суммой (Номер договора, ФИО, Дата последнего платежа, Сумма платежа)*
{code:lang=sql}
select
U.CONTRACT_NUMBER,
U.IDENTIFY as "FIO",
max(PL.OPERATOR_DATE_IN) as "LAST PAY DATE",
sum(PL.SUMMA_IN)
from PAY_LOG PL
left join USERS U on PL.USER_ID_IN = U.ID
where PL.MSG_OUT = 'ACCEPTED' and PL.OPERATOR_DATE_IN >= '2013.01.01' and
U.parid in (select GROUP_ID from GLN_RECURSIVE_GROUP_WALK(654))
group by U.CONTRACT_NUMBER, U.IDENTIFY
union
select
cast('total' as varchar(32)),
cast('' as varchar(128)),
cast('' as timestamp),
sum(PL.SUMMA_IN)
from PAY_LOG PL
left join USERS U on PL.USER_ID_IN = U.ID
where PL.MSG_OUT = 'ACCEPTED' and PL.OPERATOR_DATE_IN >= '2013.01.01' and
U.parid in (select GROUP_ID from GLN_RECURSIVE_GROUP_WALK(654))
{code}
*Пример 102. Отчёт по платежам за выбранный период в формате "id платежа - номер договора - сумма платежа"*
{code}
select
fo.OP_ID,
u.contract_number,
sum(FO.OP_SUMMA)/10000000000.00 as "Приход"
from users u
left join tarif_plan tp on u.TARIFF_ID_CACHE=tp.plan_id
left join finance_operations fo on u.id=fo.USER_ID
where fo.op_type=2 and (fo.OP_DATE between '2015-01-01' and '2018-07-01')
group by fo.OP_ID,U.CONTRACT_NUMBER
{code}

*Пример 103. Отчёт который показывает абонентов, у которых финансовых операций с типом расход больше, чем 1 за один и тот же день.*
{code}
select OP_DATE,
user_id,
count(*)
from finance_operations
where op_type=1
group by OP_DATE,user_id
having count(*)>1
{code}