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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SELECT 'Поступившие заявки' AS OPERATION, count(qdfDeals.DealStage * (Month(DateClosed) = 1)) AS Январь, 
count(qdfDeals.DealStage * (Month(DateClosed) = 2 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Февраль, 
count(qdfDeals.DealStage * (Month(DateClosed) = 3 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Март, 
count(qdfDeals.DealStage * (Month(DateClosed) = 4 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Апрель, 
count(qdfDeals.DealStage * (Month(DateClosed) = 5 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Май, 
count(qdfDeals.DealStage * (Month(DateClosed) = 6 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Июнь, 
count(qdfDeals.DealStage * (Month(DateClosed) = 7 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Июль, 
count(qdfDeals.DealStage * (Month(DateClosed) = 8 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Август, 
count(qdfDeals.DealStage * (Month(DateClosed) = 9 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Сентябрь, 
count(qdfDeals.DealStage * (Month(DateClosed) = 10 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Октябрь, 
count(qdfDeals.DealStage * (Month(DateClosed) = 11 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Ноябрь, 
count(qdfDeals.DealStage * (Month(DateClosed) = 12 AND (qdfDeals.DealStage='Реализация' or qdfDeals.DealStage='Отказ'))) AS Декабрь, 
Январь+ Февраль + Март + Апрель + Май + Июнь + Июль + Август + Сентябрь + Октябрь + Ноябрь + Декабрь AS Итого
FROM qdfDeals
WHERE Year(qdfDeals.DateClosed)=2015



2. «Реализация». Количество записей со значением поля «Стадия проекта» равным «Реализация*». Процент – как отношение количества реализованных заявок к общему количеству поступивших заявок (значение стр.2/ значение стр.1 * 100%).
3. «Отказ». Количество записей со значением поля «Стадия проекта» равным «Отказ». Процент – как отношение количества отказных заявок к общему количеству поступивших заявок (значение стр.3/ значение стр.1 * 100%).
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39161605
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

Копай в сторону перекрестных запросов (crosstab), но по дороге посмотри суммирующие запросы (group by)
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39162090
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
SELECT 'Поступившие заявки' AS OPERATION, Month(DateClosed) AS M, 
-sum(DealStage * (M = 1)) AS Январь, 
-sum(DealStage * (M = 2)) AS Февраль, 
-sum(DealStage * (M = 3)) AS Март, 
-sum(DealStage * (M = 4)) AS Апрель, 
-sum(DealStage * (M = 5)) AS Май, 
-sum(DealStage * (M = 6)) AS Июнь, 
-sum(DealStage * (M = 7)) AS Июль, 
-sum(DealStage * (M = 8)) AS Август, 
-sum(DealStage * (M = 9)) AS Сентябрь, 
-sum(DealStage * (M = 10)) AS Октябрь, 
-sum(DealStage * (M = 11)) AS Ноябрь, 
-sum(DealStage * (M = 12)) AS Декабрь, 
sum(DealStage) AS Итого,
-sum(DealStage * (M = 1 AND DealStage='Отказ')) AS Январь_Отказ, 
-sum(DealStage * (M = 2 AND DealStage='Отказ')) AS Февраль_Отказ, 
-sum(DealStage * (M = 3 AND DealStage='Отказ')) AS Март_Отказ, 
-sum(DealStage * (M = 4 AND DealStage='Отказ')) AS Апрель_Отказ, 
-sum(DealStage * (M = 5 AND DealStage='Отказ')) AS Май_Отказ, 
-sum(DealStage * (M = 6 AND DealStage='Отказ')) AS Июнь_Отказ, 
-sum(DealStage * (M = 7 AND DealStage='Отказ')) AS Июль_Отказ, 
-sum(DealStage * (M = 8 AND DealStage='Отказ')) AS Август_Отказ, 
-sum(DealStage * (M = 9 AND DealStage='Отказ')) AS Сентябрь_Отказ, 
-sum(DealStage * (M = 10 AND DealStage='Отказ')) AS Октябрь_Отказ, 
-sum(DealStage * (M = 11 AND DealStage='Отказ')) AS Ноябрь_Отказ, 
-sum(DealStage * (M = 12 AND DealStage='Отказ')) AS Декабрь_Отказ, 
sum(DealStage) AS Итого_Отказ,
Январь - Январь_Отказ AS Январь_Реализация, Февраль - Февраль_Отказ AS Февраль_Реализация,
Март - Март_Отказ AS Март_Реализация, Апрель - Апрель_Отказ AS Апрель_Реализация,
Май - Май_Отказ AS Май_Реализация, Июнь - Июнь_Отказ AS Июнь_Реализация,
Июль - Июль_Отказ AS Июль_Реализация, Август - Август_Отказ AS Август_Реализация,
Сентябрь - Сентябрь_Отказ AS Сентябрь_Реализация, Октябрь - Октябрь_Отказ AS Октябрь_Реализация,
Ноябрь - Ноябрь_Отказ AS Ноябрь_Реализация, Декабрь - Декабрь_Отказ AS Декабрь_Реализация,
Итого - Итого_Отказ AS Итого_Реализация
FROM qdfDeals
WHERE Year(DateClosed)=2015 AND (DealStage='Реализация' OR DealStage='Отказ')

При этом фрагмент, выделенный желтым, не является обязательным.
Результаты запроса идут в одну строку.
Размещение этих результатов в виде таблички легко выполняется в отчете или форме.
Эти значения всегда можно будет получить в отчете (или форме) из предыдущих данных запроса.
Если же хотите видеть табличку при открытии запроса,
но не хотите (или не можете) сделать перекрестный запрос,
можно разбить запрос на части (добавив вспомогательные поля для совпадения числа полей), объединив их затем через UNION ALL.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39162094
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При этом фрагмент, выделенный желтым, не является обязательным.Поясню.
Как видно, эти данные могут быть получены в отчете или форме
путем очевидных вычислений над предыдущими результатами запроса.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39162172
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

возникли вопросы
--это производственная задача или студенческая
--вы десяток раз нарисовали отчетную форму, но ни слова о структуре исходной и порядке записей

я подобные отчеты делаю в НТМ-формате
каждая строка отдельным запросом(обычно генерируется в коде)
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39162179
Ainur.sm,

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

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

Спасибо. А как добавить год ? чтоб он и по годам выводил:?смотря куда добавить
1) чтобы каждый столбец месяца имел в названии еще и год
2) чтобы число столбцов месяцев оставалось неизменным + отдельный столбец ГОД, и для каждого года - по три строки с разными OPERATION

для каждого варианта есть свои нюансы
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164312
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
Сделала как у вас. Создала SRC и в запрос вставила коды. вышла ошибка
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164315
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ainur.sm,
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164337
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,Чтоб сгруппировать по годам.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164339
Ainur.smнепоймучка,
Сделала как у вас. Создала SRC и в запрос вставила коды. вышла ошибкау меня нет под рукой MSAccess, покажите SQL обоих запросов (только не картинкой а прямо SQL-текст вставьте сюда)
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164349
Ainur.smнепоймучка,
Сделала как у вас. Создала SRC и в запрос вставила коды. вышла ошибкатак. уже вижу, по крайней мере это насчет того, что ваш qdfActions спрашивает DateClosed - у вас там в первом union select'е откуда-то взялось DateClosed - не должно его там быть, видимо вы по ошибке его туда вписали (вместо M)

в Итоговом запросе исходного поля даты нет, он уже работает только с месяцами - которые делаются из этой даты в промежуточном запросе SRC -он для того и сделан, чтобы в каждом union сто раз Format(...) не повторять.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164359
Ainur.smнепоймучка,Чтоб сгруппировать по годам.

вот смотрите,

непоймучка1) чтобы каждый столбец месяца имел в названии еще и год
2) чтобы число столбцов месяцев оставалось неизменным + отдельный столбец ГОД, и для каждого года - по три строки с разными OPERATION

В варианте(1) придется избавиться от явного перечисления имен столбцов в разделе PIVOT, где сейчас просто явно заданы имена месяцев в нужном порядке, т.к. число и имена месяцев постоянны - потому их и можно там перечислить. А вот если в именах столбцов будет присутствовать год, то заранее "предугадать" какие года есть в базе и перечислить их в PIVOT в общем случае нельзя (не прибегая к предварительному программному анализу)

В свою очередь, после отказа от явного перечисления имен столбцов в PIVOT, мы получим:

a) столбцы будут сформированы в зависимости от фактического наличия данных
(т.е. например, если данных за январь нет - не будет январского столбца вообще)

b) столбцы будут следовать в алфавитном порядке (т.е. не январь-декабрь, как сейчас, а Август-Январь)
и поэтому, чтобы получить привычный порядок столбцов-месяцев, их придется именовать не по именам, а по порядковым номерам

однако, самая большая засада в том, что в варианте(1) "заложено" ограничение, которое не даст вам обрабатывать записи более, чем за определенное количество лет. в MSAccess есть ограничение на число столбцов в таблице/запросе (255), а у вас каждый новый год добавляет в результат 24 столбца - поэтому, если не сделать в запросе доп.условие для отбора по годам, то лет так через десять ведения такой базы, ваш запрос просто перестанет работать.

поэтому вариант(2) предпочтительнее, имхо
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164369
ну и собственно, чтобы реализовать этот вариант(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
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164374
вдогонку - ну и само-собой, УБРАТЬ из запроса SRC условие для отбора по году WHERE Year(DateClosed) = 2015
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164387
если же вы, говоря "Чтоб сгруппировать по годам"
имеете ввиду такой итоговый результат:

OPERATION20142014%20152015%ИТОГОИТОГО%Поступившие заявки201004010060100Реализация105020503050Отказ105020503050

тогда

1) замените в запросе SRC
Код: vbnet
1.
Format(DateClosed,"mmmm") AS M

на
Код: vbnet
1.
Format(DateClosed,"yyyy") AS M


2) в Итоговом запросе замените
Код: vbnet
1.
2.
3.
4.
5.
PIVOT M IN (
'Январь','Январь%',
...
'ИТОГО','ИТОГО%'
)

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

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

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

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

кроме "Реализация" и "Отказа" мне надо добавить
Причины. перечислены в скриншоте. И тоже самое посчитать кол-во. и в %. кол-во причины "Неустроило время ответа" разделить на кол-во "поступившие заявки" * 100%




ОШИБКА


кроме "Реализация" и "Отказа" мне надо добавить
Причины. перечислены в скриншоте. И тоже самое посчитать кол-во. и в %. кол-во причины "Неустроило время ответа" разделить на кол-во "ОТКАЗ" * 100%[/quot][/quot]
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164426
Ainur.smнепоймучка,
все получилось по годам.

кроме "Реализация" и "Отказа" мне надо добавить
Причины. перечислены в скриншоте. И тоже самое посчитать кол-во. и в %.
так если есть такая таблица-справочник Причин, то по идее, и данные у вас в базе должны быть нормализованы,
т.е. в основной таблице (там где поле DateClosed) поле причины (по сути DealStage) должно быть представлено НЕ текстом ('Реализация' и 'Отказ'), а ЧИСЛОМ - значением ключевого поля этого самого справочника ''Причин' (а если ничего такого нет - это стоило бы сделать)

наличие такой таблицы-справочника - это более правильно,
нежели всякие извращения типа IIF(DealStage='Реализация',2,3) AS ord
которые пришлось писать в запросе SRC

вместо этого в запросе SRC следует сделать INNER JOIN основной таблицы и этого справочника причин
и использовать, например его Код AS ord (чтобы в итоговом запросе строки OPERATION следовали в том же порядке как в этом справочнике -
именно для этого в запросе SRC и 'высасывается из пальца' это поле ord)

кроме того, если требуется в итоговый запрос вывести НЕ все причины, а только какие-то избранные,
то в условии WHERE DealStage IN ('Реализация','Отказ') в запросе SRC лучше использовать
коды этих избранных причин WHERE DealStage_ID IN (2,3,4,7,8...)

В смысле удобства оператора такой список кодов Причин можно получить в где-то форме, например из списка с мультивыбором,
основанном на этом справочнике причин
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164427
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бонус.
"Не устроило" пишется раздельно.
Ведь эти пункты клиенту демонстрируются?)))
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164433
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

и как сделать? может кроме SRC создать новый запрос? Отдельно для причин ?
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164440
Ainur.smнепоймучка,

и как сделать? может кроме SRC создать новый запрос? Отдельно для причин ?так, стоп. я, видать, недопонял

то есть, Реализация и Отказ - это отдельная песня (в поле DealStage) - и с ней мы разобрались,
но КРОМЕ того, у вас есть ЕЩЕ одно поле (RefuseReasons), где пишутся причины отказа, так?

1) какого типа это поле?

2) показанная вами картинка со списком причин - еэто вы просто так, или у вас есть ОТДЕЛЬНАЯ таблица со списокм причин (типа справочник причин)

3) вы пишете "кроме Реализация и Отказа мне надо добавить" - добавить в ЭТОТ же запрос?
в какое место, в каком порядке?

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

и как сделать? может кроме SRC создать новый запрос? Отдельно для причин ?так, стоп. я, видать, недопонял

то есть, Реализация и Отказ - это отдельная песня (в поле DealStage) - и с ней мы разобрались,
но КРОМЕ того, у вас есть ЕЩЕ одно поле (RefuseReasons), где пишутся причины отказа, так?

1) какого типа это поле?

2) показанная вами картинка со списком причин - еэто вы просто так, или у вас есть ОТДЕЛЬНАЯ таблица со списокм причин (типа справочник причин)

3) вы пишете "кроме Реализация и Отказа мне надо добавить" - добавить в ЭТОТ же запрос?
в какое место, в каком порядке?

можете как-то образец желаемого итогового результата показать для примера?


Да все верно.
1. Существует поле (RefuseReasons), где перечислены причины отказа как на скриншоте. (Тип String) выбирается галочкой.
2. Надо посчитать кол-во каждой причин. Например Кол-во записей со значением поле(DealStage) равным "Отказ" и со значением поле ПРичины отказа (RefuseReasons) равным "Не устроило время ответа". И Процент – как отношение количества отказных заявок по причине «Не устроило время ответа» к общему количеству отказных заявок. Кол-во "Не устроило время ответа"/ кол-во отказ *100
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164454
Ainur.sm,

если все так, то да - можно и так.
т.е. создаете еще один запрос (например REF) по аналогии с SRC - только для поля RefuseReasons

причем, чтобы меньше потом менять в итоговом запросе, лучше сделать там этому полю выходной алиас
с тем же именем, что и в запросе SRC (DealStage) вот в таком духе:
Код: vbnet
1.
SELECT RefuseReasons AS DealStage,...

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

Создала REF для RefuseReasons.


SELECT RefuseReasons, Format(DateClosed,"mmmm") AS M, Format(DateClosed,"yyyy") AS Y
FROM qdfDeals
WHERE Year(DateClosed)=2015;

а Куда это писать.

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

Создала REF для RefuseReasons.


SELECT RefuseReasons, Format(DateClosed,"mmmm") AS M, Format(DateClosed,"yyyy") AS Y
FROM qdfDeals
WHERE Year(DateClosed)=2015;

а Куда это писать.

SELECT RefuseReasons AS DealStage,...




и как изменить IIF(qdfDeals.DealStage='Реализация*',2,3) AS ord, для RefuseReasons??
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164465
Ainur.smAinur.smпропущено...

кол-во причины "Неустроило время ответа" разделить на кол-во "ОТКАЗ" * 100%это можно сделать по аналогии с тем как, сейчас считается % к ОБЩЕМУ числу записей в Итоговом запросе
посмотрите - там в одном из UNION-подзапросов есть inner join на вложенный под(select), который считает это общее число записей, типа
Код: vbnet
1.
...(SELECT M,Count(1) AS N FROM SRC GROUP BY M)...


и это полученное число потом идет как знаменатель в расчете % текушего показателя - Count(1)/Min(S.N)*100

А для случая запроса с причинами вам надо в Итоговом запросе
в аналогичном под-select'е посчитать НЕ общее число записей, а только отказы - т.е. добавить условие вида
Код: vbnet
1.
SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M


и кстати, в ЭТОМ под-select'е надо выбирать именно FROM SRC (а не FROM REF), ибо отказы у вас - в SRC
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164472
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
не так быстро......
создала REF


SELECT RefuseReasons, Format(DateClosed,"mmmm") AS M, Count(*) AS ord
FROM qdfDeals
WHERE Year(DateClosed)=2015
GROUP BY Format(DateClosed,"mmmm"), RefuseReasons;
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164475
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.smпропущено...


кол-во причины "Неустроило время ответа" разделить на кол-во "ОТКАЗ" * 100%это можно сделать по аналогии с тем как, сейчас считается % к ОБЩЕМУ числу записей в Итоговом запросе
посмотрите - там в одном из UNION-подзапросов есть inner join на вложенный под(select), который считает это общее число записей, типа
Код: vbnet
1.
...(SELECT M,Count(1) AS N FROM SRC GROUP BY M)...


и это полученное число потом идет как знаменатель в расчете % текушего показателя - Count(1)/Min(S.N)*100

А для случая запроса с причинами вам надо в Итоговом запросе
в аналогичном под-select'е посчитать НЕ общее число записей, а только отказы - т.е. добавить условие вида
Код: vbnet
1.
SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M


и кстати, в ЭТОМ под-select'е надо выбирать именно FROM SRC (а не FROM REF), ибо отказы у вас - в SRC


Добавить так?

SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC GROUP BY M) (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164476
Ainur.smAinur.smнепоймучка,

Создала REF для RefuseReasons.


SELECT RefuseReasons, Format(DateClosed,"mmmm") AS M, Format(DateClosed,"yyyy") AS Y
FROM qdfDeals
WHERE Year(DateClosed)=2015;

а Куда это писать.

SELECT RefuseReasons AS DealStage,...

вот так
Код: vbnet
1.
2.
SELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, Format(DateClosed,"yyyy") AS Y
FROM qdfDeals



а вот тут:
Ainur.sm1. Существует поле (RefuseReasons), где перечислены причины отказа как на скриншоте. (Тип String) выбирается галочкой.
а что это за "галочки"? (начинаю подозревать плохое)

уточните - вот у вас есть текстовое поле RefuseReasons
в него что - можно вписать НЕСКОЛЬКО этих самых причин для ОДНОЙ записи?
путем расстановки этих самых 'галочек' напротив нужных причин - и они все запишутся как значение этого поля для текущей записи?
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164481
Ainur.smнепоймучкапропущено...
это можно сделать по аналогии с тем как, сейчас считается % к ОБЩЕМУ числу записей в Итоговом запросе
посмотрите - там в одном из UNION-подзапросов есть inner join на вложенный под(select), который считает это общее число записей, типа
Код: vbnet
1.
...(SELECT M,Count(1) AS N FROM SRC GROUP BY M)...


и это полученное число потом идет как знаменатель в расчете % текушего показателя - Count(1)/Min(S.N)*100

А для случая запроса с причинами вам надо в Итоговом запросе
в аналогичном под-select'е посчитать НЕ общее число записей, а только отказы - т.е. добавить условие вида
Код: vbnet
1.
SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M


и кстати, в ЭТОМ под-select'е надо выбирать именно FROM SRC (а не FROM REF), ибо отказы у вас - в SRC


Добавить так?

SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC GROUP BY M) (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
Добавить - в смысле просто where добавить к тому, что было и все
Код: vbnet
1.
2.
3.
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164482
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.smпропущено...


вот так
Код: vbnet
1.
2.
SELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, Format(DateClosed,"yyyy") AS Y
FROM qdfDeals



а вот тут:
Ainur.sm1. Существует поле (RefuseReasons), где перечислены причины отказа как на скриншоте. (Тип String) выбирается галочкой.
а что это за "галочки"? (начинаю подозревать плохое)

уточните - вот у вас есть текстовое поле RefuseReasons
в него что - можно вписать НЕСКОЛЬКО этих самых причин для ОДНОЙ записи?
путем расстановки этих самых 'галочек' напротив нужных причин - и они все запишутся как значение этого поля для текущей записи?


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

вот так
Код: vbnet
1.
2.
SELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, Format(DateClosed,"yyyy") AS Y
FROM qdfDeals



а вот тут:
пропущено...

а что это за "галочки"? (начинаю подозревать плохое)

уточните - вот у вас есть текстовое поле RefuseReasons
в него что - можно вписать НЕСКОЛЬКО этих самых причин для ОДНОЙ записи?
путем расстановки этих самых 'галочек' напротив нужных причин - и они все запишутся как значение этого поля для текущей записи?


Галочка для выбора из перечисленных причин.это я понимаю

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



Добавить так?

SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC GROUP BY M) (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
Добавить - в смысле просто where добавить к тому, что было и все
Код: vbnet
1.
2.
3.
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord







Вот что получилось

Итоговый запрос



TRANSFORM MIN(N)
SELECT ord, DealStage
FROM [SELECT DealStage,M,ord,Count(1) AS N FROM SRC GROUP BY M,DealStage,ord

UNION ALL


SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord

UNION ALL

SELECT DealStage,'ИТОГО',ord,Count(1) FROM SRC GROUP BY DealStage,ord

UNION ALL

SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC T,(SELECT Count(1) AS N FROM SRC) S
GROUP BY T.DealStage,T.ord

UNION ALL

SELECT 'Поступившие заявки',M,1,Count(1) FROM SRC GROUP BY M

UNION ALL

SELECT 'Поступившие заявки',M & '%',1,100 FROM SRC GROUP BY M

UNION ALL

SELECT 'Поступившие заявки','ИТОГО',1,Count(1) FROM SRC

UNION ALL

SELECT 'Поступившие заявки','ИТОГО%', 1, 100 FROM SRC
]. AS X
GROUP BY ord, DealStage
ORDER BY ord
PIVOT M IN (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);


REF
SELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, Count(*) AS ord
FROM qdfDeals
WHERE Year(DateClosed)=2015
GROUP BY Format(DateClosed,"mmmm"), RefuseReasons;
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164492
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкаAinur.smпропущено...



Галочка для выбора из перечисленных причин.это я понимаю

суть вопроса такова:
для ОДНОЙ (текущей) записи в qdfDeals таким образом можно выбрать (галочкой)
1) только одну причину или
2) неколько причин - столько сколько оператор поставт галочек?

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

Добавить - в смысле просто where добавить к тому, что было и все
Код: vbnet
1.
2.
3.
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord







Вот что получилось

Итоговый запрос...

в этом Итоговом надо заменить SRC на REF - везде кроме под-select'ов
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164494
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непоймучкаа что это за "галочки"? (начинаю подозревать плохое)
Подозрения наверняка оправдаются. Скорее всего галочки многозначное поле и надо проверять Value многозначного поля на соответствие условиям.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164495
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mds_world,


TRANSFORM MIN(N)
SELECT ord, DealStage
FROM [SELECT DealStage,M,ord,Count(1) AS N FROM SRC GROUP BY M,DealStage,ord

UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord

UNION ALL

SELECT DealStage,'ИТОГО',ord,Count(1) FROM REF GROUP BY DealStage,ord

UNION ALL

SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF T,(SELECT Count(1) AS N FROM SRC) S
GROUP BY T.DealStage,T.ord

UNION ALL

SELECT 'Поступившие заявки',M,1,Count(1) FROM REF GROUP BY M

UNION ALL

SELECT 'Поступившие заявки',M & '%',1,100 FROM REF GROUP BY M

UNION ALL

SELECT 'Поступившие заявки','ИТОГО',1,Count(1) FROM REF

UNION ALL

SELECT 'Поступившие заявки','ИТОГО%', 1, 100 FROM REF
]. AS X
GROUP BY ord, DealStage
ORDER BY ord
PIVOT M IN (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164498
Ainur.smнепоймучкапропущено...
это я понимаю

суть вопроса такова:
для ОДНОЙ (текущей) записи в qdfDeals таким образом можно выбрать (галочкой)
1) только одну причину или
2) неколько причин - столько сколько оператор поставт галочек?

Программа позволяет выбрать несколько причин.
Если так, то увы - похоже, ваше поле RefuseReasons - это т.н. МНОГОЗНАЧНОЕ поле,
и в этом случае я никак не могу вам помочь - я с ними не знаком.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164503
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,

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

ПЛЗ. Если учитывать только одну причину...... ((((
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164528
Ainur.smнепоймучка,

А если только одну причину??
Дело не в том, что вы (как юзер) станете заносить туда всегда строго только одну причину.
Дело в том, что данное поле в СТРУКТУРЕ таблицы сделано как МНОГОЗНАЧНОЕ.
А это - не просто текстовое поле, с ним стандартный человеческий SQL работать не умеет.

Многозначные поля - это такая специальная 'ересь', попирающая реляционную стройность баз данных,
которую Microsoft придумал в MSAccess 2007 - специально чтобы позлить всех нормальных людей,
и чтобы работать с этими полями в запросах, добавил в свой офисный SQL какие-то невнятные костыли,
на которых тут мало кому охота ходить.

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

ПЛЗ. Если учитывать только одну причину...... ((((ну ОК.
чтобы как-то закруглить топик, давайте оформим решение с учетом вашего условия, слегка усугубив его:
если "учитывать только одну причину", которая записывается в обычное (НЕмногозначное) текстовое поле RefuseReasons А в этом случае у вас все уже почти готово.
Вот последний вариант вашего SQL для 'причин' (запрос 'Итоговый2'), что вы тут привели:
Ainur.sm
TRANSFORM MIN(N)
SELECT ord, DealStage
FROM (

SELECT DealStage,M,ord,Count(1) AS N FROM SRC GROUP BY M,DealStage,ord
UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM REF GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF T,(SELECT Count(1) AS N FROM SRC) S
GROUP BY T.DealStage,T.ord

UNION ALL
SELECT 'Поступившие заявки',M,1,Count(1) FROM REF GROUP BY M
UNION ALL
SELECT 'Поступившие заявки',M & '%',1,100 FROM REF GROUP BY M
UNION ALL
SELECT 'Поступившие заявки','ИТОГО',1,Count(1) FROM REF
UNION ALL
SELECT 'Поступившие заявки','ИТОГО%', 1, 100 FROM REF

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

Черным цветом написано TRANSFORM-обрамление (часть запроса которая занимается 'разворотом' данных по столбцам) -
эта часть на 100% совпадает с первым Итоговым запросом - с которым в итоге мы будем объединять этот запрос (Итоговый2) -
и в едином конечном запросе эта (черная) часть и будет присутствовать (однократно) точно в таком же виде.

Синий и красный- это UNION-запрос, который формирует исходную выборку для предстоящего разворота данных.
И эта часть должна быть ДОБАВЛЕНА в конец аналогичной UNION-части первого Итогового запроса.

При этом, то что написано тут красным - УЖЕ есть в первом Итоговом (по сути, это доп.суммарная строка для двух итоговых строк 'Отказ' и 'Реализация' и она НЕ имеет отношения к причинам), поэтому повторно эту (красную) часть в конечный запрос включать не надо.

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

Итак, рассмотрим дорабатываемую часть запроса:
SQLSELECT DealStage,M,ord,Count(1) AS N FROM REF GROUP BY M,DealStage,ord
UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM REF GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF T,(SELECT Count(1) AS N FROM SRC WHERE DealStage = 'Отказ' ) S
GROUP BY T.DealStage,T.ord
тут я дополнительно выделил зеленым select-подзапросы, которые считают общее число записей для вычисления процентов, плюс жирным выделил во втором под-select'е условие (ранее нами упущенное) аналогичное первому.
*** красным исправил ошибку в вашем варианте

в этой части итогового запроса все union-select'ы обращаются к (под)запросу REF, который по вашей последней версии таков:
REFSELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, Count(*) AS ord
FROM qdfDeals
WHERE Year(DateClosed)=2015
GROUP BY Format(DateClosed,"mmmm"), RefuseReasonsчто не совсем верно, т.к.
исходный запрос REF (как и запрос SRC) НЕ должен группировать данные.

Его задача (и сам смысл его создания) в другом:
1) выбрать записи из исходных таблиц (откуда надо) с нужным критерием (Year(DateClosed)=2015)
2) преобразовать дату в название месяца (Format(DateClosed,"mmmm"))
3) как-то сформировать (условно) порядковый номер для строки в итоговом запросе (ord)

В запросе SRC этот ord делается выражением IIF(DealStage='Реализация',2,3) AS ord
для того чтобы после сортировки ORDER BY ord в итоговом запросе итоговые строки шли в указанном порядке:
'Реализация' - второй строкой, 'Отказ' - третьей строкой
'Поступившие заявки' будут первой строкой, т.к. в union-select'ах для них везде явно указан ord=1

В случае запроса REF мы могли бы задать этот ord для каждой причины аналогичным выражением с несколькими IIF -
если важен какой-то конкретный порядок причин в итоговом запросе. Если же итоговый порядок причин НЕ важен - главное, чтобы они все оказались там ПОСЛЕ строки 'Отказ' - тогда можно им всем задать одинаковый ord=4 в этом запросе

Ну и наконец, поскольку основная задача данного запроса REF - выбрать записи с причинами отказа , т.е., если я правильно понимаю логику вашей задачи, у всех этих записей в поле DealStage должно быть записано "Отказ" - и значит мы должны добавить соответствующее условие в WHERE этого запроса.

Учитывая все вышесказанное, запрос REF должен выглядеть вот так:
REFSELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, 4 AS ord
FROM qdfDeals
WHERE Year(DateClosed)=2015 AND DealStage = 'Отказ'

Учитывая, что теперь мы включили критерий DealStage = 'Отказ' в запрос REF, в верхнем SQL зеленые подзапросы можно также сделать на основе REF (а не на SRC с этим условием, как ранее), т.е. вот так:
SQLSELECT DealStage,M,ord,Count(1) AS N FROM REF GROUP BY M,DealStage,ord
UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF AS T INNER JOIN (SELECT M,Count(1) AS N FROM REF GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM REF GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF T,(SELECT Count(1) AS N FROM REF ) S
GROUP BY T.DealStage,T.ord
Вот именно в таком виде данная часть запроса для ПРИЧИН и должна быть ДОБАВЛЕНА в (первый) Итоговый запрос
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164613
завершение

Итак, конечный текст запроса:
запрос(0) ИтоговыйTRANSFORM MIN(N)
SELECT ord, DealStage
FROM
(
SELECT DealStage,M,ord,Count(1) AS N FROM SRC GROUP BY M,DealStage,ord
UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM SRC GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC T,(SELECT Count(1) AS N FROM SRC) S
GROUP BY T.DealStage,T.ord

UNION ALL
SELECT 'Поступившие заявки',M,1,Count(1) FROM SRC GROUP BY M
UNION ALL
SELECT 'Поступившие заявки',M & '%',1,100 FROM SRC GROUP BY M
UNION ALL
SELECT 'Поступившие заявки','ИТОГО',1,Count(1) FROM SRC
UNION ALL
SELECT 'Поступившие заявки','ИТОГО%', 1, 100 FROM SRC

UNION ALL
SELECT DealStage,M,ord,Count(1) AS N FROM REF GROUP BY M,DealStage,ord
UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF AS T INNER JOIN (SELECT M,Count(1) AS N FROM REF GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM REF GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF T,(SELECT Count(1) AS N FROM REF) S
GROUP BY T.DealStage,T.ord

) AS X

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

Черная часть - первый Итоговый запрос (из той БД, что я выкладывал)
Синий кусок - новая добавка, которую весь вечер мучали, и которая должна дать вам в результате строки со статистикой Причин отказа.
***Красным - опционная добавка, чтобы строки с причинами отсортировать по алфавиту

И для полной отчетности допишу сюда же тексты двух исходных запросов:
запрос(1) SRCSELECT DealStage, Format(DateClosed,"mmmm") AS M, IIF(DealStage='Реализация',2,3) AS ord
FROM qdfDeals WHERE Year(DateClosed)=2015 AND DealStage IN ('Реализация','Отказ')запрос(2) REFSELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, 4 AS ord
FROM qdfDeals WHERE Year(DateClosed)=2015 AND DealStage = 'Отказ'
И еще раз важное замечание по конечному решению:
в этих запросах предполагается, что поле RefuseReasons - обычное текстовое поле, в котором записана ОДНА причина отказа (т.е. это НЕ то многозначное поле RefuseReasons, которое у вас есть сейчас)

И пожелание:
Если у вас есть такая возможность, рекомендую отказаться от использования многозначных полей.
Множественность атрибутов для одной записи некоторой таблицы (как это происходит в вашем случае: несколько причин одного отказа) чудесно реализуется более человечьим способом при помощи одной дополнительной таблицы

P.S.
запросы писал умозрительно, в данный момент проверить не на чем,
поэтому неизбежны ошибки/очепятки, будьте готовы

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

Как я оговорил выше, все запросы написаны исходя из того, что RefuseReasons - это обычное текстовое поле, которое хранит причину отказа, записанную в текстовом виде. Поэтому нам неважно как это значение там оказалось - выбрали его из какого-то списка значений, или записали туда программно или забили руками от балды - в нашем запросе группировка идет по полному текстовому значению этого поля.

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

Итак, конечный текст запроса:
запрос(0) ИтоговыйTRANSFORM MIN(N)
SELECT ord, DealStage
FROM
(
SELECT DealStage,M,ord,Count(1) AS N FROM SRC GROUP BY M,DealStage,ord
UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM SRC GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC T,(SELECT Count(1) AS N FROM SRC) S
GROUP BY T.DealStage,T.ord

UNION ALL
SELECT 'Поступившие заявки',M,1,Count(1) FROM SRC GROUP BY M
UNION ALL
SELECT 'Поступившие заявки',M & '%',1,100 FROM SRC GROUP BY M
UNION ALL
SELECT 'Поступившие заявки','ИТОГО',1,Count(1) FROM SRC
UNION ALL
SELECT 'Поступившие заявки','ИТОГО%', 1, 100 FROM SRC

UNION ALL
SELECT DealStage,M,ord,Count(1) AS N FROM REF GROUP BY M,DealStage,ord
UNION ALL
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF AS T INNER JOIN (SELECT M,Count(1) AS N FROM REF GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM REF GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM REF T,(SELECT Count(1) AS N FROM REF) S
GROUP BY T.DealStage,T.ord

) AS X

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

Черная часть - первый Итоговый запрос (из той БД, что я выкладывал)
Синий кусок - новая добавка, которую весь вечер мучали, и которая должна дать вам в результате строки со статистикой Причин отказа.
***Красным - опционная добавка, чтобы строки с причинами отсортировать по алфавиту

И для полной отчетности допишу сюда же тексты двух исходных запросов:
запрос(1) SRCSELECT DealStage, Format(DateClosed,"mmmm") AS M, IIF(DealStage='Реализация',2,3) AS ord
FROM qdfDeals WHERE Year(DateClosed)=2015 AND DealStage IN ('Реализация','Отказ')запрос(2) REFSELECT RefuseReasons AS DealStage, Format(DateClosed,"mmmm") AS M, 4 AS ord
FROM qdfDeals WHERE Year(DateClosed)=2015 AND DealStage = 'Отказ'
И еще раз важное замечание по конечному решению:
в этих запросах предполагается, что поле RefuseReasons - обычное текстовое поле, в котором записана ОДНА причина отказа (т.е. это НЕ то многозначное поле RefuseReasons, которое у вас есть сейчас)

И пожелание:
Если у вас есть такая возможность, рекомендую отказаться от использования многозначных полей.
Множественность атрибутов для одной записи некоторой таблицы (как это происходит в вашем случае: несколько причин одного отказа) чудесно реализуется более человечьим способом при помощи одной дополнительной таблицы

P.S.
запросы писал умозрительно, в данный момент проверить не на чем,
поэтому неизбежны ошибки/очепятки, будьте готовы

Успехов.
---


Результат получился. но с ошибками.

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

а в запросах SRC и REF при этом в условиях отбора год одинаковый указан?
проверьте
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164666
проверил, считает как надо

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


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


И еще один вопрос. как сгруппировать по менеджеру кол-во поступившие заявки и отказы, и причины отказы?
можно по аналогии с тем, как вот здесь я предлагал вам делать группировку по году в отдельном столбце -
только вместо года использовать поле менеджера

в итоге вы получите в результате имя менеджера в новом первом столбце, и его показателями во прочих столбцах
UserordDealStageФевральФевраль%...Винокурова1Поступившие заявки2100...Винокурова2Реализация...Винокурова3Отказ233...Винокурова4Неустроило время ответа250...Иконников1Поступившие заявки1100...Иконников2Реализация117.....................
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164921
вдогонку:

по сравнению с описанной ранее группировкой по году,
при группировке по манагеру есть еще один нюанс:

в Итоговом запросе
в те union-select'ы, которые содержат под-select'ы (для вычисления %),
следует добавить в INNER JOIN связь по этому полю User, т.е. например:

там где было так
Код: vbnet
1.
2.
3.
SELECT T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT M,Count(1) AS N FROM SRC GROUP BY M) S ON T.M=S.M
GROUP BY T.M,T.DealStage,T.ord


должно в итоге стать так:
Код: vbnet
1.
2.
3.
4.
SELECT T.User,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT User,M,Count(1) AS N FROM SRC GROUP BY User,M) S ON T.M=S.M AND T.User=S.User
GROUP BY T.User,T.M,T.DealStage,T.ord
'...


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

Спасибо. Отдельно для Usera создать запрос ? как SRC, REF
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164926
вдогонку-2:

и еще, я заметил, что на вашей последней картинке в строке 'Поступившие заявки'
в столбце процентов значение не 100% (в отличие от предыдущего варианта)

в этом варианте, судя по всему, это значение означает
процент заявок этого менеджера от ОБЩЕГО числа заявок в данном МЕСЯЦЕ

если так, то для этого вам потребуется подправить еще один union-select в Итоговом запросе,
а именно вот этот:
Код: vbnet
1.
SELECT 'Поступившие заявки',M & '%',1,100 FROM SRC GROUP BY M


переделать так:
Код: vbnet
1.
2.
3.
SELECT T.User,'Поступившие заявки',T.M & '%',1,Round(Count(1)/Min(S.N)*100)
FROM SRC T INNER JOIN (SELECT M,Count(1) AS N FROM SRC GROUP BY M) S ON T.M=S.M
GROUP BY User,M
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164930
Ainur.smнепоймучка,

Спасибо. Отдельно для Usera создать запрос ? как SRC, REF
нет, прямо в SRC и REF добавить это поле - т.е. в запросы, которые испольуются для Итогового кросс-запроса
для данного варианта с группировками по юзеру
(если это отдельная задача, для которой будете делать свои отдельные запросы, то
делайте копии SRC и REF - и туда добавляйте поле USER'a)

в таком духе
Код: vbnet
1.
2.
SELECT UserName1 AS User,DealStage, Format(DateClosed,"mmmm") AS M, IIF(DealStage='Реализация',2,3) AS ord
FROM #dbTmp#qdfDeals WHERE Year(DateClosed)=2014 AND DealStage IN ('Реализация','Отказ')
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164931
чуток лишнего там прихватил,
надо FROM qdfDeals
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164932
непоймучкаAinur.smнепоймучка,

Спасибо. Отдельно для Usera создать запрос ? как SRC, REF
нет, прямо в SRC и REF добавить это поле - т.е. в запросы, которые испольуются для Итогового кросс-запроса
для данного варианта с группировками по юзеру
(если это отдельная задача, для которой будете делать свои отдельные запросы, то
делайте копии SRC и REF - и туда добавляйте поле USER'a)


Хотя зря я это, ни к чему делать копии - дописывайте прямо в существующие SRC, REF -
там же просто выборка, группировок нет, доп.поле никак там не помешает.

Т.е. прямо эту пару запросов SRC И REF (с полем User)
можно будет использовать в обоих вариантах вашего Итогового кросс-запроса
(и с группировкой по менеджеру, и без нее)
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164937
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучка,
Ошибка синтаксиса from

TRANSFORM Min(X.N) AS [Min-N]
SELECT X.ord, X.DealStage
FROM (SELECT DealStage,M,ord,Count(1) AS N FROM qdfSRC2 GROUP BY M,DealStage,ord
UNION ALL
SELECT T.User,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC2 AS T INNER JOIN (SELECT User,M,Count(1) AS N FROM qdfSRC2 GROUP BY User,M) S ON T.M=S.M AND T.User=S.User
GROUP BY T.User,T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM qdfSRC2 GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC2 AS T INNER JOIN(SELECT User,Count(1) AS N FROM qdfSRC2) S
GROUP BY T.DealStage,T.ord
UNION ALL
SELECT 'Поступившие заявки',M,1,Count(1) FROM qdfSRC2 GROUP BY M
UNION ALL
SELECT T.User,'Поступившие заявки',T.M & '%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC2 T INNER JOIN (SELECT M,Count(1) AS N FROM qdfSRC2 GROUP BY M) S ON T.M=S.M
GROUP BY User,M
UNION ALL
SELECT 'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfSRC2
UNION ALL
SELECT 'Поступившие заявки','ИТОГО%', 1, 100 FROM qdfSRC2
UNION ALL
SELECT DealStage,M,ord,Count(1) AS N FROM qdfREF2 GROUP BY M,DealStage,ord
UNION ALL
SELECT T.User,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF2 AS T INNER JOIN (SELECT User,M,Count(1) AS N FROM qdfREF2 GROUP BY User,M) S ON T.M=S.M AND T.User=S.User
GROUP BY T.User,T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM qdfREF2 GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF2 AS T INNER JOIN(SELECT User,Count(1) AS N FROM qdfREF2) S
GROUP BY T.DealStage,T.ord

) AS X
GROUP BY X.ord, X.DealStage
ORDER BY X.ord, X.DealStage
PIVOT X.M In (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
);
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164944
Ainur.smнепоймучка,
Ошибка синтаксиса from

TRANSFORM Min(X.N) AS [Min-N]
SELECT X.ord, X.DealStage
FROM (SELECT DealStage,M,ord,Count(1) AS N FROM qdfSRC2 GROUP BY M,DealStage,ord
UNION ALL
SELECT T.User,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC2 AS T INNER JOIN (SELECT User,M,Count(1) AS N FROM qdfSRC2 GROUP BY User,M) S ON T.M=S.M AND T.User=S.User
GROUP BY T.User,T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM qdfSRC2 GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC2 AS T INNER JOIN(SELECT User,Count(1) AS N FROM qdfSRC2) S
GROUP BY T.DealStage,T.ord
UNION ALL
SELECT 'Поступившие заявки',M,1,Count(1) FROM qdfSRC2 GROUP BY M
UNION ALL
SELECT T.User,'Поступившие заявки',T.M & '%',1,Round(Count(1)/Min(S.N)*100)
FROM qdfSRC2 T INNER JOIN (SELECT M,Count(1) AS N FROM qdfSRC2 GROUP BY M) S ON T.M=S.M
GROUP BY User,M
UNION ALL
SELECT 'Поступившие заявки','ИТОГО',1,Count(1) FROM qdfSRC2
UNION ALL
SELECT 'Поступившие заявки','ИТОГО%', 1, 100 FROM qdfSRC2
UNION ALL
SELECT DealStage,M,ord,Count(1) AS N FROM qdfREF2 GROUP BY M,DealStage,ord
UNION ALL
SELECT T.User,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF2 AS T INNER JOIN (SELECT User,M,Count(1) AS N FROM qdfREF2 GROUP BY User,M) S ON T.M=S.M AND T.User=S.User
GROUP BY T.User,T.M,T.DealStage,T.ord
UNION ALL
SELECT DealStage,'ИТОГО',ord,Count(1) FROM qdfREF2 GROUP BY DealStage,ord
UNION ALL
SELECT T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM qdfREF2 AS T INNER JOIN(SELECT User,Count(1) AS N FROM qdfREF2) S
GROUP BY T.DealStage,T.ord

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

проверяйте по очереди каждый select в отдельности (без union all) - все должны работать сами-по-себе
какой не сработает - смотрите его внимательнее

и кстати:
это новое поле User надо добавить в КАЖДЫЙ select и в каждый group by, какие тут есть -
(в.ч. и в подзапросы, где вообще НЕ было group by, надо также добавить group by User)
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39164946
кроме того, на вскидку вижу пару ошибок, на которые точно может так ругаться:

там, где вы добавили INNER JOIN, но забыли дописать по какому полю
например:
Код: vbnet
1.
FROM qdfREF2 AS T INNER JOIN(SELECT User,Count(1) AS N FROM qdfREF2) S ON T.User=S.User


выделенное вы забыли написать (в этом и в другом, аналогичном месте)

кроме того в
Код: vbnet
1.
SELECT T.User,'Поступившие заявки',T.M & '%',...


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

нет, прямо в SRC и REF добавить это поле - т.е. в запросы, которые испольуются для Итогового кросс-запроса
для данного варианта с группировками по юзеру
(если это отдельная задача, для которой будете делать свои отдельные запросы, то
делайте копии SRC и REF - и туда добавляйте поле USER'a)


Хотя зря я это, ни к чему делать копии - дописывайте прямо в существующие SRC, REF -
там же просто выборка, группировок нет, доп.поле никак там не помешает.

Т.е. прямо эту пару запросов SRC И REF (с полем User)
можно будет использовать в обоих вариантах вашего Итогового кросс-запроса
(и с группировкой по менеджеру, и без нее)

Если в REF - после добавление поле USER'a)

в таком духе
Код: sql
1.
2.
SELECT UserName1 AS User,DealStage, Format(DateClosed,"mmmm") AS M, IIF(DealStage='Реализация',2,3) AS ord
FROM #dbTmp#qdfDeals WHERE Year(DateClosed)=2014 AND DealStage IN ('Реализация','Отказ')



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


Хотя зря я это, ни к чему делать копии - дописывайте прямо в существующие SRC, REF -
там же просто выборка, группировок нет, доп.поле никак там не помешает.

Т.е. прямо эту пару запросов SRC И REF (с полем User)
можно будет использовать в обоих вариантах вашего Итогового кросс-запроса
(и с группировкой по менеджеру, и без нее)

Если в REF - после добавление поле USER'a)

в таком духе
Код: sql
1.
2.
SELECT UserName1 AS User,DealStage, Format(DateClosed,"mmmm") AS M, IIF(DealStage='Реализация',2,3) AS ord
FROM #dbTmp#qdfDeals WHERE Year(DateClosed)=2014 AND DealStage IN ('Реализация','Отказ')



Будет ли учитывать с группировкой по причине и по менеджеру ??

Добавила в REF User сортирует по менеджеру и по причине. и добавила в SRC

SELECT UserName1 AS Users, DealStage, RefuseReasons, Format(DateClosed,"mmmm") AS M, 4 AS ord
FROM qdfDeals
WHERE Year(DateClosed)=2014 And DealStage='Отказ';
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165443
Ainur.sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
непоймучкакроме того, на вскидку вижу пару ошибок, на которые точно может так ругаться:

там, где вы добавили INNER JOIN, но забыли дописать по какому полю
например:
Код: vbnet
1.
FROM qdfREF2 AS T INNER JOIN(SELECT User,Count(1) AS N FROM qdfREF2) S ON T.User=S.User


выделенное вы забыли написать (в этом и в другом, аналогичном месте)

кроме того в
Код: vbnet
1.
SELECT T.User,'Поступившие заявки',T.M & '%',...


к ON T.M=S.M - забыли добавить AND T.User=S.User
(как это сделано в более другом подзапросе, о чем я пояснял ранее)

ошибка


Код: 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.
TRANSFORM MIN(N)
SELECT Users, ord, DealStage
FROM [SELECT Users,DealStage,M,ord,Count(1) AS N FROM SRC GROUP BY  Users,M,DealStage,ord
UNION ALL
SELECT T.Users,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT Users,M,Count(1) AS N FROM SRC GROUP BY  Users, M) S ON T.M=S.M AND T.Users=S.Users
GROUP BY T.Users,T.M,T.DealStage,T.ord
UNION ALL
SELECT Users,DealStage,'ИТОГО',ord,Count(1) FROM SRC GROUP BY  Users,DealStage,ord
UNION ALL
SELECT T.Users,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM SRC AS T INNER JOIN (SELECT Users,Count(1) AS N FROM SRC GROUP BY  Users) S ON T.M=S.M AND T.Users=S.Users
GROUP BY T.Users,T.DealStage,T.ord



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

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



выделенное лишнее

М - это месяц, а в строчках ИТОГО у нас данные за год,
там поле М нигде не должно фигурировать
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165515
Ainur.sm,

запрос Итоговый по менеджерам
Код: 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.
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.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
TRANSFORM MIN(N)
SELECT User,ord,DealStage
FROM
(
/* число 'реализаций' и 'отказов' у менеджера за один месяц */
SELECT User,DealStage,M,ord,Count(1) AS N FROM  SRC  GROUP BY User,M,DealStage,ord
UNION ALL
/* процент 'реализаций' и 'отказов' от общего числа заявок менеджера за один месяц */
SELECT T.User,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM  SRC  T INNER JOIN (SELECT User,M,Count(1) AS N FROM  SRC  GROUP BY User,M) S ON T.M=S.M AND T.User=S.User
GROUP BY T.User,T.M,T.DealStage,T.ord
 
UNION ALL
/* число 'реализаций' и 'отказов' у менеджера за ГОД */
SELECT User,DealStage,'ИТОГО',ord,Count(1) FROM  SRC  GROUP BY User,DealStage,ord
UNION ALL
/* процент 'реализаций' и 'отказов' от общего числа заявок менеджера за ГОД */
SELECT T.User,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM  SRC  T INNER JOIN (SELECT User,Count(1) AS N FROM  SRC  GROUP BY User) S ON T.User=S.User
GROUP BY User,T.DealStage,T.ord
 
UNION ALL
/* общее число заявок у менеджера за один месяц */
SELECT User,'Поступившие заявки',M,1,Count(1) FROM  SRC  GROUP BY User,M
UNION ALL
/* процент числа заявок менеджера от общего числа заявок за один месяц */
SELECT T.User,'Поступившие заявки',T.M & '%',1,Round(Count(1)/MIN(S.N)*100)
FROM  SRC  T INNER JOIN (SELECT M,Count(1) AS N FROM  SRC  GROUP BY M) S ON T.M=S.M
GROUP BY User,M
 
UNION ALL
/* общее число заявок у менеджера за ГОД */
SELECT User,'Поступившие заявки','ИТОГО',1,Count(1) FROM  SRC  GROUP BY User
UNION ALL
/* процент числа заявок менеджера от общего числа заявок за ГОД */
SELECT T.User,'Поступившие заявки','ИТОГО%',1,Round(Count(1)/Min(S.N)*100)
FROM  SRC  T, (SELECT Count(1) AS N FROM  SRC ) S
GROUP BY T.User
 
UNION ALL
/* число отказов по одной причине у менеджера за один месяц */
SELECT User,DealStage,M,ord,Count(1) AS N FROM  REF  GROUP BY User,M,DealStage,ord
UNION ALL
/* процент отказов по одной причине от общего числа отказов менеджера за один месяц */
SELECT T.User,T.DealStage,T.M & "%",T.ord,Round(Count(1)/Min(S.N)*100)
FROM  REF  T INNER JOIN (SELECT User,M,Count(1) AS N FROM  REF  GROUP BY User,M) S ON T.M=S.M AND T.User=S.User
GROUP BY T.User,T.M,T.DealStage,T.ord
 
UNION ALL
/* число отказов по одной причине у менеджера за ГОД */
SELECT User,DealStage,'ИТОГО',ord,Count(1) FROM  REF  GROUP BY User,DealStage,ord
UNION ALL
/* процент отказов по одной причине от общего числа отказов менеджера за ГОД */
SELECT T.User,T.DealStage,'ИТОГО%',T.ord,Round(Count(1)/Min(S.N)*100)
FROM  REF  T INNER JOIN (SELECT User,Count(1) AS N FROM  REF  GROUP BY User) S ON T.User=S.User
GROUP BY T.User,T.DealStage,T.ord
 
) AS X
 
GROUP BY User,ord,DealStage
ORDER BY User,ord,DealStage
PIVOT M IN (
'Январь','Январь%',
'Февраль','Февраль%',
'Март','Март%',
'Апрель','Апрель%',
'Май','Май%',
'Июнь','Июнь%',
'Июль','Июль%',
'Август','Август%',
'Сентябрь','Сентябрь%',
'Октябрь','Октябрь%',
'Ноябрь','Ноябрь%',
'Декабрь','Декабрь%',
'ИТОГО','ИТОГО%'
)

Синим выделены добавки, внесенные в прежний Итоговый запрос
чтобы он делал разбивку/группировку данных по менеджерам

Красным выделены имена исходных запросов SRC и REF
как уже ранее было сказано, вобщем-то не требуется для нового Итогового запроса (по менеджерам)
делать какие-то новые/отдельные запросы SRC2 и REF2 - можно использовать прежние, в которые
просто добавить поле User в раздел SELECT

Зеленым выделены КОММЕНТАРИИ, поясняющие для каждого union-select'а смысл данных, которые там выбираются
В рабочей версии запроса зеленые строки надо удалить.

Пробуйте.
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165530
вдогонку -
см. рабочий запрос в архиве
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165682
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 ? чтоб сортировка по месяц и годам было?
...
Рейтинг: 0 / 0
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
    #39165686
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ainur.sm,

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

база города и регионы
...
Рейтинг: 0 / 0
Как использовать 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
97 сообщений из 97, показаны все 4 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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