powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос про выборку по кварталам!!!
11 сообщений из 11, страница 1 из 1
Вопрос про выборку по кварталам!!!
    #32040488
a3a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
a3a
Гость
Есть реляционная база данных с кучей таблиц и связями между ними. Необходимо в отчете (запросе) сделать выборку сумм по кварталам. Access предлагает в отчете вертикальную развертку, но это неудобно при сгруппированных данных в данном примере. В перекрестном запросе выборку делает как надо, но только суммы, а необходимо еще и другие параметры из этой базы, и при том если сумм не было в данном квартале, он не выводит этот квартал, а необходимо чтоб были хотя бы нули.
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040526
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это удобно делать в хранимой процедуре с под. запросами
если хочешь выложу пример
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040574
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может не очень красиво
но принцип понять можно
в качестве параметра процедура исполнение бюджета подразделения


исх данные - таблица бюджет (значения поквартально дата- дата начала периода, значение, ид_департамента)
таблица raspred - распределение расходов (дата, сумма_распределенного,ид_департамента)

вх. параметры:
получаем идентификатор департамента и отчетный год


определяем 4 периода - кварталы года
главным запросом выбираем статьи бюджета по периодам за год, подчиненными вычисляем промежуточные значения



ALTER PROCEDURE isp_bug_findep_year
@year char(4) ,
@id_findep int
AS

declare @1from datetime
declare @1to datetime
declare @2from datetime
declare @2to datetime
declare @3from datetime
declare @3to datetime
declare @4from datetime
declare @4to datetime

set @1from= convert (datetime,'01.01.' + @year ,104)
set @1to= convert (datetime,'31.03.' + @year ,104)
set @2from= convert (datetime,'01.04.' + @year ,104)
set @2to= convert (datetime,'30.06.' + @year ,104)
set @3from= convert (datetime,'01.07.' + @year ,104)
set @3to= convert (datetime,'30.09.' + @year ,104)
set @4from= convert (datetime,'01.10.' + @year ,104)
set @4to= convert (datetime,'31.12.' + @year ,104)






SELECT strash.sname, all_bug.id_findep, strash.id_razdel, strash.dohod,strash.namestrash, all_bug.id_strash, all_bug.value as value1,
(SELECT q.value
FROM all_bug as q WHERE (q.data_from = @2from) AND (q.data_to = @2to) and (all_bug.id_strash=q.id_strash) and (q.id_findep=@id_findep))
as value2,

(SELECT w.value
FROM all_bug as w WHERE (w.data_from = @3from) AND (w.data_to = @3to) and (all_bug.id_strash=w.id_strash) and (w.id_findep=@id_findep))
as value3,

(SELECT e.value
FROM all_bug as e WHERE (e.data_from = @4from) AND (e.data_to = @4to) and (all_bug.id_strash=e.id_strash) and (e.id_findep=@id_findep))
as value4,

(SELECT sum(r.value)
FROM all_bug as r where (r.data_from >= @1from) AND (r.data_to <= @4to) and (all_bug.id_strash=r.id_strash) and (r.id_findep=@id_findep))
as value5,

(select isnull(sum (summa),0)
from all_raspred as rsp1 where (rsp1.dataplat >= @1from ) and (rsp1.dataplat < @2from ) and (rsp1.id_findep=@id_findep) and (rsp1.id_strash=all_bug.id_strash))
as rash1,

(select isnull(sum (summa),0)
from all_raspred as rsp2 where (rsp2.dataplat >= @2from ) and (rsp2.dataplat < @3from ) and (rsp2.id_findep=@id_findep) and (rsp2.id_strash=all_bug.id_strash))
as rash2,

(select isnull(sum (summa),0)
from all_raspred as rsp3 where (rsp3.dataplat >= @3from ) and (rsp3.dataplat < @4from ) and (rsp3.id_findep=@id_findep) and (rsp3.id_strash=all_bug.id_strash))
as rash3,

(select isnull(sum (summa),0)
from all_raspred as rsp4 where (rsp4.dataplat >= @4from ) and (rsp4.dataplat< @4to ) and (rsp4.id_findep=@id_findep) and (rsp4.id_strash=all_bug.id_strash))
as rash4,

(select isnull(sum (summa),0)
from all_raspred as rsp5 where (rsp5.dataplat >= @1from ) and (rsp5.dataplat < @4to ) and (rsp5.id_findep=@id_findep) and (rsp5.id_strash=all_bug.id_strash))
as rash5


FROM all_bug INNER JOIN strash ON all_bug.id_strash = strash.idstrash
WHERE (all_bug.data_from = @1from) AND (all_bug.data_to = @1to) and (all_bug.id_findep=@id_findep)
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040578
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК!
Выложив данную процедуру, Вы успешно прошли тест на
пригодность к пребыванию в нашей клинике "Просто треп".
Милости просим!
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040584
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 rattail

наверняка Вы можете предложтить более красивое решение ...
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040614
sFx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишем следующий запрос и радуемся жизни.
Код: plaintext
1.
2.
3.
SELECT Sum(IIf(Format(T1![DATGR], "q" )= 1 ,([KOLF]), 0 )) AS 1квартал, Sum(IIf(Format(T1![DATGR], "q" )= 2 ,([KOLF]), 0 )) AS 2квартал, Sum(IIf(Format(T1![DATGR], "q" )= 3 ,([KOLF]), 0 )) AS 3квартал, Sum(IIf(Format(T1![DATGR], "q" )= 4 ,([KOLF]), 0 )) AS 4квартал
FROM T1
WHERE (((T1.DATGR)># 12 / 31 / 01 #));


это на один год, если нужно два, то ставится соответствующее условие, если нужно еще какие то данные, то выводим их на экран...
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040634
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК!
Не обижайтесь - процедура у вас чудесная,
никто не спорит.
Но вопрос-то был чисто по Аксессу (даже не адп).
Приглашение не отменяю.
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040639
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rattail вы правы ...

процедура здесь не совсем по теме...
и с format "q" гораздо симпатичнее
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32040803
a3a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
a3a
Гость
Всем, особенно SFX огромное спасибо, очень помогло!!!
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32041002
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тебе позволяют ресурсы компьютера то попробуй создать запрос многие-ко-многим: ето чистый акксесс. Правда долго работает, но надёжно(проверено).
...
Рейтинг: 0 / 0
Вопрос про выборку по кварталам!!!
    #32047154
RIm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вид перекрестного запроса устраивает и надо чтобы появлялись столбцы с "пустыми кварталами", можно прописать названия колонок в свойстве "заголовки столбцов" в свойствах перекрестного запроса.
Это чуть легче чем вариант SFX.

Ну или соответственно вариант с IIF как сказано выше.

Руслан.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Вопрос про выборку по кварталам!!!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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