powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
22 сообщений из 97, страница 4 из 4
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165749
Ainur.smнепоймучкану и собственно, чтобы реализовать этот вариант(2), можно сделать так:


1) в запрос SRC в раздел SELECT добавить выражение вида
Код: vbnet
1.
Year(DateClosed) AS Y


2) а в Итоговом запросе дописать в КАЖДОМ UNION-подзапросе в разделах SELECT и GROUP BY этот самый Y - везде первым полем по-порядку (в тех union-подзапросах, где GROUP BY вообще не было - дописать 'GROUP BY Y')

и в итоге получите примерно такое
ГОДOPERATIONянвянв%февфев%...ИТОГОИТОГО%2015Поступившие заявки2010040100...100001002015Реализация10502050...5000502015Отказ10502050...5000502014Поступившие заявки21004100...10001002014Реализация150250...500502014Отказ150250...50050

в union-подзапросах дописывать Y ? чтоб сортировка по месяц и годам было?
Ну да.

После того, как я выше очень подробно расписал вам как сделать запрос
с группировкой по менеджерам и даже приложил базу с готовым примером -
у вас теперь есть ПОЛНАЯ инструкция, как написать запрос такой по годам:

1) ТОЧНО ТАК ЖЕ как вы добавляли в SRC и REF поле User -
вам надо добавить в SRC и REF поле Year(DateClosed) AS Y в раздел SELECT
(ну и конечно, убрать из SRC и REF условие Year(DateClosed)=2014 из раздела WHERE)

2) ТОЧНО ТАК ЖЕ как поле User добавлялось в Итоговый запрос для группировки по менеджерам
(см. ВСЕ выделенное синим в предыдущем конечном тексте Итогового запроса) - так же добавить
во все эти же места новое поле Y - и в итоговой кросс-таблице у вас появится новый столбец год.

Методика доработки текста запроса в данном случае абсолютно аналогична.
Успехов.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165767
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
Спасибо!!!
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165858
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ainur.smнепоймучкану и собственно, чтобы реализовать этот вариант(2), можно сделать так:


1) в запрос SRC в раздел SELECT добавить выражение вида
Код: vbnet
1.
Year(DateClosed) AS Y


2) а в Итоговом запросе дописать в КАЖДОМ UNION-подзапросе в разделах SELECT и GROUP BY этот самый Y - везде первым полем по-порядку (в тех union-подзапросах, где GROUP BY вообще не было - дописать 'GROUP BY Y')

и в итоге получите примерно такое
ГОДOPERATIONянвянв%февфев%...ИТОГОИТОГО%2015Поступившие заявки2010040100...100001002015Реализация10502050...5000502015Отказ10502050...5000502014Поступившие заявки21004100...10001002014Реализация150250...500502014Отказ150250...50050

в union-подзапросах дописывать Y ? чтоб сортировка по месяц и годам было?







Код: 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.
TRANSFORM Min(X.N) AS [Min-N]
SELECT X.Y, X.ord, X.DealStage
FROM [SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfPostupzayavki GROUP BY  Y,M,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki AS T INNER JOIN (SELECT M,Count(1) AS N FROM qdfPostupzayavki GROUP BY M) S ON T.M=S.M
GROUP BY T.Y,T.M,T.DealStage,T.ord
UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfPostupzayavki GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T,(SELECT Count(1) AS N FROM qdfPostupzayavki) S
GROUP BY T.Y,T.DealStage,T.ord
UNION ALL
SELECT Y, 'Поступившие заявки',M,1,Count(1) FROM qdfPostupzayavki GROUP BY Y, M
UNION ALL
SELECT Y,'Поступившие заявки',M & '%',1,100 FROM qdfPostupzayavki GROUP BY  Y,M
UNION ALL
SELECT Y, 'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfPostupzayavki GROUP BY  Y
UNION ALL
SELECT Y, 'Поступившие заявки','ИТОГО%', 1, 100 FROM qdfPostupzayavki  GROUP BY  Y
UNION ALL
SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfCauses GROUP BY Y,M,DealStage,ord
UNION ALL
SELECT T.Y, T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses AS T INNER JOIN (SELECT M,Count(1) AS N FROM qdfCauses GROUP BY M) S ON T.M=S.M
GROUP BY T.Y, T.M,T.DealStage,T.ord
 UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfCauses GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses T,(SELECT Count(1) AS N FROM qdfCauses) S
GROUP BY  T.Y,T.DealStage,T.ord

]. AS X
GROUP BY X.Y, X.ord, X.DealStage
ORDER BY X.Y, X.ord, X.DealStage
PIVOT X.M In (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);




Добавила год, но в % не правильно считает((( в чем ошибка??
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165876
Ainur.smAinur.smпропущено...
в union-подзапросах дописывать Y ? чтоб сортировка по месяц и годам было?
Код: 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.
TRANSFORM Min(X.N) AS [Min-N]
SELECT X.Y, X.ord, X.DealStage
FROM [SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfPostupzayavki GROUP BY  Y,M,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki AS T INNER JOIN (SELECT M,Count(1) AS N FROM qdfPostupzayavki GROUP BY M) S ON T.M=S.M
GROUP BY T.Y,T.M,T.DealStage,T.ord
UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfPostupzayavki GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T,(SELECT Count(1) AS N FROM qdfPostupzayavki) S
GROUP BY T.Y,T.DealStage,T.ord
UNION ALL
SELECT Y, 'Поступившие заявки',M,1,Count(1) FROM qdfPostupzayavki GROUP BY Y, M
UNION ALL
SELECT Y,'Поступившие заявки',M & '%',1,100 FROM qdfPostupzayavki GROUP BY  Y,M
UNION ALL
SELECT Y, 'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfPostupzayavki GROUP BY  Y
UNION ALL
SELECT Y, 'Поступившие заявки','ИТОГО%', 1, 100 FROM qdfPostupzayavki  GROUP BY  Y
UNION ALL
SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfCauses GROUP BY Y,M,DealStage,ord
UNION ALL
SELECT T.Y, T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses AS T INNER JOIN (SELECT M,Count(1) AS N FROM qdfCauses GROUP BY M) S ON T.M=S.M
GROUP BY T.Y, T.M,T.DealStage,T.ord
 UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfCauses GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses T,(SELECT Count(1) AS N FROM qdfCauses) S
GROUP BY  T.Y,T.DealStage,T.ord

]. AS X
GROUP BY X.Y, X.ord, X.DealStage
ORDER BY X.Y, X.ord, X.DealStage
PIVOT X.M In (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);


Добавила год, но в % не правильно считает((( в чем ошибка??
а в невнимательности
непоймучка2) ТОЧНО ТАК ЖЕ как поле User добавлялось в Итоговый запрос для группировки по менеджерам
(см. ВСЕ выделенное синим в предыдущем конечном тексте Итогового запроса) - так же добавить
во все эти же места новое поле Y - и в итоговой кросс-таблице у вас появится новый столбец год.
обратите внимание на процентые union-select'ы, сличайте
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165908
Ainur.sm Добавила год, но в % не правильно считает((( в чем ошибка??
хотя возможно, в случае группировки по годам вам логика процентов нужна другая?

возьмите за образец мои комментарии к кажому union-select'у вот этом тексте
и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165917
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.sm Добавила год, но в % не правильно считает((( в чем ошибка??
хотя возможно, в случае группировки по годам вам логика процентов нужна другая?

возьмите за образец мои комментарии к кажому union-select'у вот этом тексте
и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется

какое???
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165923
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.sm Добавила год, но в % не правильно считает((( в чем ошибка??
хотя возможно, в случае группировки по годам вам логика процентов нужна другая?

возьмите за образец мои комментарии к кажому union-select'у вот этом тексте
и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется


для реализ Итого сумма кол-во реализ:/ сумма кол-во поступив *100%
для отказа Итого кол-во сумма отказа/сумма кол-во поступ *100%
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165940
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.sm Добавила год, но в % не правильно считает((( в чем ошибка??
хотя возможно, в случае группировки по годам вам логика процентов нужна другая?

возьмите за образец мои комментарии к кажому union-select'у вот этом тексте
и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется



Код: 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.
TRANSFORM MIN(N)
SELECT Y, ord, DealStage
FROM [SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfPostupzayavki GROUP BY Y,M,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfPostupzayavki GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfPostupzayavki GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T INNER JOIN (SELECT Y,Count(1) AS N FROM qdfPostupzayavki GROUP BY Y) S ON T.Y=S.Y
GROUP BY Y,T.DealStage,T.ord
 
UNION ALL
SELECT Y,'Поступившие заявки',M,1,Count(1) FROM qdfPostupzayavki GROUP BY Y,M
UNION ALL
SELECT T.Y,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfPostupzayavki T INNER JOIN (SELECT M,Count(1) AS N FROM qdfPostupzayavki GROUP BY M) S ON T.M=S.M
GROUP BY Y,M
 
UNION ALL
SELECT Y,'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfPostupzayavki GROUP BY Y
UNION ALL
SELECT T.Y,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T, (SELECT Count(1) AS N FROM qdfPostupzayavki) S
GROUP BY T.Y
 
UNION ALL
SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfCauses GROUP BY Y,M,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfCauses GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfCauses GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses T INNER JOIN (SELECT Y,Count(1) AS N FROM qdfCauses GROUP BY Y) S ON T.Y=S.Y
GROUP BY T.Y,T.DealStage,T.ord
 
]. AS X
GROUP BY Y, ord, DealStage
ORDER BY Y, ord, DealStage
PIVOT M IN (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);





Итог% неправильно считает. Это без User
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165942
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ainur.smнепоймучкапропущено...

хотя возможно, в случае группировки по годам вам логика процентов нужна другая?

возьмите за образец мои комментарии к кажому union-select'у вот этом тексте
и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется



Код: 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.
TRANSFORM MIN(N)
SELECT Y, ord, DealStage
FROM [SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfPostupzayavki GROUP BY Y,M,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfPostupzayavki GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfPostupzayavki GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T INNER JOIN (SELECT Y,Count(1) AS N FROM qdfPostupzayavki GROUP BY Y) S ON T.Y=S.Y
GROUP BY Y,T.DealStage,T.ord
 
UNION ALL
SELECT Y,'Поступившие заявки',M,1,Count(1) FROM qdfPostupzayavki GROUP BY Y,M
UNION ALL
SELECT T.Y,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfPostupzayavki T INNER JOIN (SELECT M,Count(1) AS N FROM qdfPostupzayavki GROUP BY M) S ON T.M=S.M
GROUP BY Y,M
 
UNION ALL
SELECT Y,'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfPostupzayavki GROUP BY Y
UNION ALL
SELECT T.Y,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfPostupzayavki T, (SELECT Count(1) AS N FROM qdfPostupzayavki) S
GROUP BY T.Y
 
UNION ALL
SELECT Y,DealStage,M,ord,Count(1) AS N FROM qdfCauses GROUP BY Y,M,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfCauses GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,DealStage,'ИТОГО',ord,Count(1) FROM qdfCauses GROUP BY Y,DealStage,ord
UNION ALL
SELECT T.Y,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfCauses T INNER JOIN (SELECT Y,Count(1) AS N FROM qdfCauses GROUP BY Y) S ON T.Y=S.Y
GROUP BY T.Y,T.DealStage,T.ord
 
]. AS X
GROUP BY Y, ord, DealStage
ORDER BY Y, ord, DealStage
PIVOT M IN (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);





Итог% неправильно считает. Это без User
-----------------------------------------------
--------------------------
-------------------
--------------------------------------------
И тоже самое с Users.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165965
так, давайте без юзеров сперва - ибо текст запроса вы приводите без юзеров

выполните запрос, поставьте столбцы итогов рядом с операциями
сделайте скрин, и напишите конкретно, какие значения по-вашему не те
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165988
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкатак, давайте без юзеров сперва - ибо текст запроса вы приводите без юзеров

выполните запрос, поставьте столбцы итогов рядом с операциями
сделайте скрин, и напишите конкретно, какие значения по-вашему не те
Код: 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.
TRANSFORM MIN(N)  
SELECT Y,Users, ord, DealStage
FROM [SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfSRC GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y, T.Users,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY Y,Users,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,'Поступившие заявки',M,1,Count(1) FROM qdfSRC GROUP BY Y,Users,M
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT M,Count(1) AS N FROM qdfSRC GROUP BY M) S ON T.M=S.M
GROUP BY Y,Users,M
 
UNION ALL
SELECT Y,Users,'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfSRC GROUP BY Y,Users
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T, (SELECT Count(1) AS N FROM qdfSRC) S
GROUP BY T.Y,T.Users
 
UNION ALL
SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfREF GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfREF GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.DealStage,T.ord
 
]. AS X
GROUP BY Y,Users, ord, DealStage
ORDER BY Y,Users, ord, DealStage
PIVOT M IN (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);





кол-во Поступившие заявки 100%.
реализация = кол-во реализ /кол-во поступ заявки *100%
Отказ= кол-во отказов /кол-во поступив заявки *100%

Итог реализация тоже самое только сумма всех кол-во = сумма всех кол-во за 12 месяцев реализ /сумма всех кол-во за 12 месяцев поступ заявки *100%
Итог Отказ= сумма всех кол-во за 12 месяцев отказов /сумма всех кол-во за 12 месяцев поступив заявки *100%
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166002
Ainur.smнепоймучкатак, давайте без юзеров сперва - ибо текст запроса вы приводите без юзеров

выполните запрос, поставьте столбцы итогов рядом с операциями
сделайте скрин, и напишите конкретно, какие значения по-вашему не те
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT M,Count(1) AS N FROM qdfSRC GROUP BY M) S ON T.M=S.M '<--! не хватает INNER JOIN по году'
GROUP BY Y,Users,M
...
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T, (SELECT Count(1) AS N FROM qdfSRC) S '<--! не хватает INNER JOIN по году'
GROUP BY T.Y,T.Users
...



кол-во Поступившие заявки 100%.
реализация = кол-во реализ /кол-во поступ заявки *100%
Отказ= кол-во отказов /кол-во поступив заявки *100%

Итог реализация тоже самое только сумма всех кол-во = сумма всех кол-во за 12 месяцев реализ /сумма всех кол-во за 12 месяцев поступ заявки *100%
Итог Отказ= сумма всех кол-во за 12 месяцев отказов /сумма всех кол-во за 12 месяцев поступив заявки *100%
думаю, дело в этом

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY Y,Users,M
...
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Count(1) AS N FROM qdfSRC GROUP BY Y) S ON T.Y=S.Y
GROUP BY T.Y,T.Users
...


попробуйте
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166026
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.smпропущено...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT M,Count(1) AS N FROM qdfSRC GROUP BY M) S ON T.M=S.M '<--! не хватает INNER JOIN по году'
GROUP BY Y,Users,M
...
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T, (SELECT Count(1) AS N FROM qdfSRC) S '<--! не хватает INNER JOIN по году'
GROUP BY T.Y,T.Users
...



кол-во Поступившие заявки 100%.
реализация = кол-во реализ /кол-во поступ заявки *100%
Отказ= кол-во отказов /кол-во поступив заявки *100%

Итог реализация тоже самое только сумма всех кол-во = сумма всех кол-во за 12 месяцев реализ /сумма всех кол-во за 12 месяцев поступ заявки *100%
Итог Отказ= сумма всех кол-во за 12 месяцев отказов /сумма всех кол-во за 12 месяцев поступив заявки *100%
думаю, дело в этом

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY Y,Users,M
...
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Count(1) AS N FROM qdfSRC GROUP BY Y) S ON T.Y=S.Y
GROUP BY T.Y,T.Users
...


попробуйте
Код: sql
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.
TRANSFORM MIN(N)
SELECT Y, Users, ord, DealStage
FROM [SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfSRC GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y, T.Users,T.DealStage,'ИТОГОПроц',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY Y,Users,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,'Поступившие заявки',M,1,Count(1) FROM qdfSRC GROUP BY Y,Users,M
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY Y,Users,M
 
UNION ALL
SELECT Y,Users,'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfSRC GROUP BY Y,Users
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГОПроц',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN(SELECT Y,Count(1) AS N FROM qdfSRC GROUP By Y) S ON T.Y=S.Y
GROUP BY T.Y,T.Users
 
UNION ALL
SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfREF GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,'ИТОГОПроц',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfREF GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.DealStage,T.ord
 
]. AS X
GROUP BY Y, Users, ord, DealStage
ORDER BY Y, Users, ord, DealStage
PIVOT M IN (
'Январь','ЯнварьПроц',
'Февраль','ФевральПроц',
'Март','МартПроц',
'Апрель','АпрельПроц',
'Май','МайПроц',
'Июнь','ИюньПроц',
'Июль','ИюльПроц',
'Август','АвгустПроц',
'Сентябрь','СентябрьПроц',
'Октябрь','ОктябрьПроц',
'Ноябрь','НоябрьПроц',
'Декабрь','ДекабрьПроц',
'ИТОГО','ИТОГОПроц'
);
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166036
так, еще вот что:

в одном из только что подправленных под-запросов надо бы уточнить еще вот это:
Код: sql
1.
2.
3.
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M


и заодно аналогичное уточнение в еще одном подзапросе:
Код: sql
1.
2.
3.
SELECT T.Y, T.Users,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.DealStage,T.ord


допишите
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166042
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкатак, еще вот что:

в одном из только что подправленных под-запросов надо бы уточнить еще вот это:
Код: sql
1.
2.
3.
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M


и заодно аналогичное уточнение в еще одном подзапросе:
Код: sql
1.
2.
3.
SELECT T.Y, T.Users,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.DealStage,T.ord


допишите
дописала



Код: 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.
TRANSFORM MIN(N)
SELECT Y, Users, ord, DealStage
FROM [SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfSRC GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y, T.Users,T.DealStage,'ИТОГОПроц',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY Y,Users,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,'Поступившие заявки',M,1,Count(1) FROM qdfSRC GROUP BY Y,Users,M
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M
 
UNION ALL
SELECT Y,Users,'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfSRC GROUP BY Y,Users
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГОПроц',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN(SELECT Y,Count(1) AS N FROM qdfSRC GROUP By Y) S ON T.Y=S.Y
GROUP BY T.Y,T.Users
 
UNION ALL
SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfREF GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,'ИТОГОПроц',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfREF GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.DealStage,T.ord
 
]. AS X
GROUP BY Y, Users, ord, DealStage
ORDER BY Y, Users, ord, DealStage
PIVOT M IN (
'Январь','ЯнварьПроц',
'Февраль','ФевральПроц',
'Март','МартПроц',
'Апрель','АпрельПроц',
'Май','МайПроц',
'Июнь','ИюньПроц',
'Июль','ИюльПроц',
'Август','АвгустПроц',
'Сентябрь','СентябрьПроц',
'Октябрь','ОктябрьПроц',
'Ноябрь','НоябрьПроц',
'Декабрь','ДекабрьПроц',
'ИТОГО','ИТОГОПроц'
);
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166058
Ainur,

Вы там давайте с умом резвитесь-то

А разделе PIVOT задается перечень ИМЕН столбцов,
которые НАДО показывать на выходе в указанном порядке
(из числа тех, что TRANSFORM формирует из исходных выбранных строк)

PIVOT M - означает, что в столбцы будет разворачиваться значения поля М - а там
имена месяцев - в половине подзапросов, а в другой половине - имя месяца с символом процента (М & '%')

кода вы исправили в PIVOT список столбцов
с 'Январь','Январь%', на 'Январь','ЯнварьПроц',...
вы таким образом попросили выводить столбец 'ЯнварьПроц' - который НЕ ФОРМИРУЕТСЯ никаким подзапросом
и исключили из итога столбец 'Январь%' - который ФОРМИРУЕТСЯ подзапросом:
Код: sql
1.
2.
3.
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord


т.е. легким движением руки вы просто вывели 12 пустых столбцов с процентами

это к тому, что подобные изменения надо делать синхронно - в двух этих местах
если меняете перечень имен столбцов в PIVOT - проверьте подзапросы, дабы сохранить соответствие

Т.е. для вашего случая в указанном подзапросе надо заменить T.M & "%" на T.M & "Проц"
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166066
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur,

Вы там давайте с умом резвитесь-то

А разделе PIVOT задается перечень ИМЕН столбцов,
которые НАДО показывать на выходе в указанном порядке
(из числа тех, что TRANSFORM формирует из исходных выбранных строк)

PIVOT M - означает, что в столбцы будет разворачиваться значения поля М - а там
имена месяцев - в половине подзапросов, а в другой половине - имя месяца с символом процента (М & '%')

кода вы исправили в PIVOT список столбцов
с 'Январь','Январь%', на 'Январь','ЯнварьПроц',...
вы таким образом попросили выводить столбец 'ЯнварьПроц' - который НЕ ФОРМИРУЕТСЯ никаким подзапросом
и исключили из итога столбец 'Январь%' - который ФОРМИРУЕТСЯ подзапросом:
Код: sql
1.
2.
3.
SELECT T.Y,T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord


т.е. легким движением руки вы просто вывели 12 пустых столбцов с процентами

это к тому, что подобные изменения надо делать синхронно - в двух этих местах
если меняете перечень имен столбцов в PIVOT - проверьте подзапросы, дабы сохранить соответствие

Т.е. для вашего случая в указанном подзапросе надо заменить T.M & "%" на T.M & "Проц"



ИЗВИНИТЕ!!!!)) исправила. НО в некоторых местах он считает правильно. Поступив заявки берет за 100. А в основном неправильно.

Код: 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.
TRANSFORM MIN(N)
SELECT Y, Users, ord, DealStage
FROM [SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "Проц",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfSRC GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y, T.Users,T.DealStage,'ИТОГОПроц',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY Y,Users,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,'Поступившие заявки',M,1,Count(1) FROM qdfSRC GROUP BY Y,Users,M
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки',T.M & 'Проц',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M
 
UNION ALL
SELECT Y,Users,'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfSRC GROUP BY Y,Users
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГОПроц',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN(SELECT Y,Count(1) AS N FROM qdfSRC GROUP By Y) S ON T.Y=S.Y
GROUP BY T.Y,T.Users
 
UNION ALL
SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "Проц",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfREF GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfREF GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,'ИТОГОПроц',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfREF GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.DealStage,T.ord
 
]. AS X
GROUP BY Y, Users, ord, DealStage
ORDER BY Y, Users, ord, DealStage
PIVOT M IN (
'Январь','ЯнварьПроц',
'Февраль','ФевральПроц',
'Март','МартПроц',
'Апрель','АпрельПроц',
'Май','МайПроц',
'Июнь','ИюньПроц',
'Июль','ИюльПроц',
'Август','АвгустПроц',
'Сентябрь','СентябрьПроц',
'Октябрь','ОктябрьПроц',
'Ноябрь','НоябрьПроц',
'Декабрь','ДекабрьПроц',
'ИТОГО','ИТОГОПроц'
);
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166081
Ainur.sm,

этот процент считает запрос
Код: sql
1.
2.
3.
SELECT T.Y,T.Users,'Поступившие заявки',T.M & 'Проц',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M

и это /* процент числа заявок менеджера за месяц от общего числа заявок за этот месяц текущего года */
на скрине вижу цифры которые соответствуют данному правилу

если нужен /* процент числа заявок менеджера за месяц от общего числа заявок менеджера за текущий год */
Код: sql
1.
2.
3.
SELECT T.Y,T.Users,'Поступившие заявки',T.M & 'Проц',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M



в этом был вопрос?
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39166130
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

да!! спасибо)))
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39167616
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39194137
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка, Помогите

Строка отчета «Поступило заявок всего» Реализация + отказа. Количество всех записей таблицы Заявки с разбивкой по месяцам.
1.2. Процент в таблице отчета по строке «Поступило заявок всего» - это отношение количества записей за месяц к общему количеству записей за год в процентном выражении.
1.3. Строка отчета « Светлана» - количество всех записей таблицы Заявки с разбивкой по месяцам со значением поля «Менеджер проекта» из таблицы Сотрудники = « Светлана».
1.4. Процент в таблице отчета по строке « Светлана». – это отношение количества отобранных записей (записей со значением « Светлана») за месяц к общему количеству записей за месяц.
1.5. Так далее для всех значений поля «Менеджер проекта» из таблицы Сотрудники.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39194185
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать чтобы показывала только User и "Поступившие заявки"

2014 Анна "Поступившие заявки" 2
без Реализация и отказов

Код: 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.
TRANSFORM MIN(N)
SELECT Y, Users, ord, DealStage
FROM [SELECT Y,Users,DealStage,M,ord,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M,DealStage,ord
UNION ALL
SELECT T.Y,T.Users,T.DealStage,T.M & "Проц",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,M,Count(1) AS N FROM qdfSRC GROUP BY Y,Users,M) S ON T.M=S.M AND T.Users=S.Users AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,DealStage,'ИТОГО',ord,Count(1) FROM qdfSRC GROUP BY Y,Users,DealStage,ord
UNION ALL
SELECT T.Y, T.Users,T.DealStage,'ИТОГОПроц',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,Users,Count(1) AS N FROM qdfSRC GROUP BY Y,Users) S ON T.Users=S.Users AND T.Y=S.Y
GROUP BY Y,Users,T.DealStage,T.ord
 
UNION ALL
SELECT Y,Users,'Поступившие заявки',M,1,Count(1) FROM qdfSRC GROUP BY Y,Users,M
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки',T.M & 'Проц',1,Round(Count(1)/MIN(S.N)*100)
FROM qdfSRC T INNER JOIN (SELECT Y,M,Count(1) AS N FROM qdfSRC GROUP BY Y,M) S ON T.M=S.M AND T.Y=S.Y
GROUP BY T.Y,T.Users,T.M
 
UNION ALL
SELECT Y,Users,'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfSRC GROUP BY Y,Users
UNION ALL
SELECT T.Y,T.Users,'Поступившие заявки','ИТОГОПроц',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC T INNER JOIN(SELECT Y,Count(1) AS N FROM qdfSRC GROUP By Y) S ON T.Y=S.Y
GROUP BY T.Y,T.Users
 
 
 
]. AS X
GROUP BY Y, Users, ord, DealStage
ORDER BY Y, Users, ord, DealStage
PIVOT M IN (
'Январь','ЯнварьПроц',
'Февраль','ФевральПроц',
'Март','МартПроц',
'Апрель','АпрельПроц',
'Май','МайПроц',
'Июнь','ИюньПроц',
'Июль','ИюльПроц',
'Август','АвгустПроц',
'Сентябрь','СентябрьПроц',
'Октябрь','ОктябрьПроц',
'Ноябрь','НоябрьПроц',
'Декабрь','ДекабрьПроц',
'ИТОГО','ИТОГОПроц'
);
...
Рейтинг: 0 / 0
22 сообщений из 97, страница 4 из 4
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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