Ответить

 

Опции темы
Старый 01.12.2010, 06:40   #1
cashe
Пользователь
 
Аватар для cashe
 
Регистрация: 09.08.2010
Сообщений: 15
Благодарности: 0
Поблагодарили 0 раз(а) в 0 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

Здравствуйте.
Помогите, написать запрос ,гуру ПК СП.
Условие запроса выглядит так, выбрать суммы по ИС, налог - сущность 1/13/32,33,35,36, штраф - сущность 1/22/37,38,41,42,44,45,46 с разбивкой по приставам, с возможностью выбирать на определенную дату, примерно, как реализовано в этой теме /showthread.php?t=174896
 
В Минюст Цитата Спасибо
Старый 01.12.2010, 09:15   #2
belov-evgenii
Модератор раздела
 
Аватар для belov-evgenii
 
Регистрация: 03.03.2009
Сообщений: 151
Благодарности: 0
Поблагодарили 45 раз(а) в 45 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

и что не получается?
 
В Минюст Цитата Спасибо
Старый 01.12.2010, 12:20   #3
cashe
Пользователь
 
Аватар для cashe
 
Регистрация: 09.08.2010
Сообщений: 15
Благодарности: 0
Поблагодарили 0 раз(а) в 0 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

по ИС вроде как получилось
Код:
select ip.fio_spi, count (ip.pk), sum (ip2.fakt_sum_is) 
from (ip left outer join ip ip2 on (ip.pk=ip2.pk) 
and (ip.DATE_IP_IN > '29.12.2009') and (ip.DATE_IP_IN <'24.11.2010')) 
where (ip.fakt_sum_is is not null) 
group by ip.fio_spi
а вот по штрафам и налогам не соображу(
 
В Минюст Цитата Спасибо
Старый 01.12.2010, 12:35   #4
belov-evgenii
Модератор раздела
 
Аватар для belov-evgenii
 
Регистрация: 03.03.2009
Сообщений: 151
Благодарности: 0
Поблагодарили 45 раз(а) в 45 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

да ети мать, и ты туда же
Код:
select ip.fio_spi, 
   sum(case when <условияштрафы1> then 1 else 0 end) as cntfine1, 
   sum(case when <условияштрафы1> then ip.sum else 0 end) as sumfine1 
   sum(case when <условияштрафы2> then 1 else 0 end) as cnt2, 
   sum(case when <условияштрафы2> then ip.sum else 0 end) as sumfine2 
from ip 
where ... 
group by 1
 
В Минюст Цитата Спасибо
Старый 01.12.2010, 12:36   #5
raus
Модератор ФССП
 
Аватар для raus
 
Регистрация: 16.01.2009
Адрес: Россия / /
Сообщений: 3,373
Благодарности: 153
Поблагодарили 548 раз(а) в 528 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

Цитата:
Сообщение от cashe Посмотреть сообщение
выбрать суммы по ИС,
сумма сбора - что нужно - вынесенная, взысканная, перечисленная ? это все разное таки да.... точнее условия ставьте, иначе не помочь просто...
__________________
Yo Way Yo, Home Va-Ray,
Yo Ay-Rah, Jerhume Brunnen-G
 
В Минюст Цитата Спасибо
Старый 01.12.2010, 13:08   #6
cashe
Пользователь
 
Аватар для cashe
 
Регистрация: 09.08.2010
Сообщений: 15
Благодарности: 0
Поблагодарили 0 раз(а) в 0 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

Цитата:
Сообщение от raus Посмотреть сообщение
сумма сбора - что нужно - вынесенная, взысканная, перечисленная ? это все разное таки да.... точнее условия ставьте, иначе не помочь просто...
все суммы взысканные
 
В Минюст Цитата Спасибо
Старый 03.12.2010, 09:02   #7
cashe
Пользователь
 
Аватар для cashe
 
Регистрация: 09.08.2010
Сообщений: 15
Благодарности: 0
Поблагодарили 0 раз(а) в 0 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

Цитата:
Сообщение от belov-evgenii Посмотреть сообщение
да ети мать, и ты туда же
Код:
select ip.fio_spi, 
   sum(case when <условияштрафы1> then 1 else 0 end) as cntfine1, 
   sum(case when <условияштрафы1> then ip.sum else 0 end) as sumfine1 
   sum(case when <условияштрафы2> then 1 else 0 end) as cnt2, 
   sum(case when <условияштрафы2> then ip.sum else 0 end) as sumfine2 
from ip 
where ... 
group by 1
этим запросом не даем затереть поля со значением null верно ?
как правильно сделать условие ?
(ip.sisp_key containing "/1/22/37") так по сути отберем необходимую нам сущность

where (ip.fakt_sum_is is not null) здесь возьмем все суммы
 
В Минюст Цитата Спасибо
Старый 03.12.2010, 13:10   #8
belov-evgenii
Модератор раздела
 
Аватар для belov-evgenii
 
Регистрация: 03.03.2009
Сообщений: 151
Благодарности: 0
Поблагодарили 45 раз(а) в 45 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

Для примера. Запрос старый, условия возможно неверные.
Код:
select 
	ip.fio_spi as pristav, 
	sum(case when ip.date_ip_in < cast('01.01.20'||s_subdividings.sd_year as date) then 1 else 0 end) as ostatok_period_start, 
	sum(case when ip.date_ip_in between :start and :finish then 1 else 0 end) as vozbuzhdeno, 
	sum(case when ip.date_ip_in < :finish then 1 else 0 end) as na_ispolnenii, 
	sum(case when ip.date_ip_out between :start and :finish then 1 else 0 end) as okoncheno, 
	coalesce(sum(case when ip.date_ip_in between :start and :finish then 1 else 0 end), 0) - coalesce(sum(case when ip.date_ip_out between :start and :finish then 1 else 0 end), 0) as raznost, 
	sum(case when ip.date_ip_out is null then 1 else 0 end) as ostatok, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 1 then 1 else 0 end) as punkt1, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 1 and ip.solid_num = 1 then ip.main_dolg else 0 end) as sum_punkt1, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 2 then 1 else 0 end) as punkt2, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 2 and ip.solid_num = 1 then ip.sum_ else 0 end) as sum_punkt2, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 3 then 1 else 0 end) as punkt3, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 3 and ip.solid_num = 1 then ip.sum_ else 0 end) as sum_punkt3, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 4 then 1 else 0 end) as punkt4, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 4 and ip.solid_num = 1 then ip.sum_ else 0 end) as sum_punkt4, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 5 then 1 else 0 end) as punkt5, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 5 and ip.solid_num = 1 then ip.sum_ else 0 end) as sum_punkt5, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 6 then 1 else 0 end) as punkt6, 
	sum(case when ip.date_ip_out between :start and :finish and ip.num_pp = 6 and ip.solid_num = 1 then ip.sum_ else 0 end) as sum_punkt6, 
	sum(case when ip.date_ip_out between :start and :finish and ip.solid_num = 1 then ip.fakt_sum_is else 0 end) as sum_7_percent 
from ip join s_subdividings on ip.sdc = s_subdividings.sdc 
group by 1
 
В Минюст Цитата Спасибо
Старый 22.02.2011, 06:34   #9
cashe
Пользователь
 
Аватар для cashe
 
Регистрация: 09.08.2010
Сообщений: 15
Благодарности: 0
Поблагодарили 0 раз(а) в 0 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

Писалось для проги "Формирование реестров ИП" потом выгрузки копируются в ОО назвали все это действо "Аналитина", замы у нас эт делают каждую неделю.
получилось так
Код:
select  ip.uscode, ip.fio_spi, count(ip.pk), count(ip2.pk), count(ip3.pk), count(ip4.pk), count(ip5.pk), count(ip6.pk), count(ip7.pk), count(ip8.pk), count(ip9.pk), count(ip10.pk), count(ip11.pk), count(ip12.pk) 
from (((((((((ip left outer join ip ip2 on (ip.pk=ip2.pk) and (ip.DATE_IP_OUT > '01.01.2011') and (ip.DATE_IP_OUT <'21.01.2011')) 
 left outer join ip ip3 on (ip2.pk=ip3.pk) and ((ip.NUMP26 = 47 and ip.NUM_PP <= 2) or (ip.NUMP26 = 103 and ip.NUM_PP = 1))) 
 left outer join ip ip4 on (ip.pk=ip4.pk) and (ip.DATE_IP_IN < '01.01.2011')) 
 left outer join ip ip5 on (ip2.pk=ip5.pk) and (ip.DATE_IP_IN < '01.01.2011') and (ip.DATE_IP_OUT > '01.01.2011') and (ip.DATE_IP_OUT <'НУЖНАЯ НАМ ДАТА')) 
 left outer join ip ip6 on (ip2.pk=ip6.pk) and (ip.VID_ORG_ID_KEY containing '/1/') and (ip.DATE_IP_OUT > '01.01.2011') and (ip.DATE_IP_OUT <'НУЖНАЯ НАМ ДАТА')) 
 left outer join ip ip7 on (ip6.pk=ip7.pk) and ((ip.NUMP26 = 47 and ip.NUM_PP <= 2) or (ip.NUMP26 = 103 and ip.NUM_PP = 1)) and (ip.DATE_IP_OUT > '01.01.2011') and (ip.DATE_IP_OUT <'НУЖНАЯ НАМ ДАТА')) 
 left outer join ip ip8 on (ip2.pk=ip8.pk) and (ip.nump26 = 46 and ip.num_pp in (2, 3, 4)) and (ip.DATE_IP_OUT > '01.01.2011') and (ip.DATE_IP_OUT <'НУЖНАЯ НАМ ДАТА')) 
 left outer join ip ip9 on (ip8.pk=ip9.pk) and (ip.VID_ORG_ID_KEY containing '/1/') and (ip.DATE_IP_OUT > '01.01.2011') and (ip.DATE_IP_OUT <'НУЖНАЯ НАМ ДАТА')) 
 left outer join ip ip10 on (ip.pk=ip10.pk) and (ip.VID_ORG_ID_KEY containing '/1/')) 
 left outer join ip ip11 on (ip4.pk=ip11.pk) and (ip.VID_ORG_ID_KEY containing '/1/') 
 left outer join ip ip12 on (ip.pk=ip12.pk) and (ip.DATE_IP_IN > '01.01.2011') and (ip.VID_ORG_ID_KEY containing '/1/') 
where (ip.SSD is null) and (ip.SSV is null) and (ip.DATE_IP_IN > '29.12.1900') and (ip.DATE_IP_IN < 'НУЖНАЯ НАМ ДАТА') 
group by ip.uscode, ip.fio_spi
здесь отдельным запросов выбираем штрафы
Код:
select  ip.uscode, ip.fio_spi, sum (ip_in_sum.summ) as summa 
from (ip left outer join ip_in_sum on (ip.pk=ip_in_sum.fk) 
) 
where ((ip.sisp_key in 
( 
'/1/22/37/', 
'/1/22/38/', 
'/1/22/41/', 
'/1/22/42/', 
'/1/22/44/', 
'/1/22/45/', 
'/1/22/46/' 
) 
and ip_in_sum.date_sum >= '29.12.2009' 
and ip_in_sum.date_sum <= '06.09.2010')) 
and ip.main_dolg is not null 
group by ip.uscode, ip.fio_spi
 
В Минюст Цитата Спасибо
Старый 22.02.2011, 08:58   #10
belov-evgenii
Модератор раздела
 
Аватар для belov-evgenii
 
Регистрация: 03.03.2009
Сообщений: 151
Благодарности: 0
Поблагодарили 45 раз(а) в 45 сообщениях

Обратиться по нику
Цитата выделенного
По умолчанию

Твой запрос - полный п. Но почему-то все равно продолжаешь гнуть.
 
В Минюст Цитата Спасибо
Ответить


Быстрый ответ

Сообщение:
Опции


Ваши права в разделе