|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
1. «Поступившие заявки». Количество всех записей с разбивкой по заданным периодам (например, по месяцам). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
2. «Реализация». Количество записей со значением поля «Стадия проекта» равным «Реализация*». Процент – как отношение количества реализованных заявок к общему количеству поступивших заявок (значение стр.2/ значение стр.1 * 100%). 3. «Отказ». Количество записей со значением поля «Стадия проекта» равным «Отказ». Процент – как отношение количества отказных заявок к общему количеству поступивших заявок (значение стр.3/ значение стр.1 * 100%). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2016, 19:15 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, Копай в сторону перекрестных запросов (crosstab), но по дороге посмотри суммирующие запросы (group by) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 09:02 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Код: 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.
При этом фрагмент, выделенный желтым, не является обязательным. Результаты запроса идут в одну строку. Размещение этих результатов в виде таблички легко выполняется в отчете или форме. Эти значения всегда можно будет получить в отчете (или форме) из предыдущих данных запроса. Если же хотите видеть табличку при открытии запроса, но не хотите (или не можете) сделать перекрестный запрос, можно разбить запрос на части (добавив вспомогательные поля для совпадения числа полей), объединив их затем через UNION ALL. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 15:26 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
При этом фрагмент, выделенный желтым, не является обязательным.Поясню. Как видно, эти данные могут быть получены в отчете или форме путем очевидных вычислений над предыдущими результатами запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 15:29 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, возникли вопросы --это производственная задача или студенческая --вы десяток раз нарисовали отчетную форму, но ни слова о структуре исходной и порядке записей я подобные отчеты делаю в НТМ-формате каждая строка отдельным запросом(обычно генерируется в коде) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 16:12 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, посмотрите запрос во вложении на нем можно делать отчетную форму с вашей картинки ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 16:16 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Спасибо. А как добавить год ? чтоб он и по годам выводил:? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 15:34 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, Спасибо. А как добавить год ? чтоб он и по годам выводил:?смотря куда добавить 1) чтобы каждый столбец месяца имел в названии еще и год 2) чтобы число столбцов месяцев оставалось неизменным + отдельный столбец ГОД, и для каждого года - по три строки с разными OPERATION для каждого варианта есть свои нюансы ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 16:44 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Сделала как у вас. Создала SRC и в запрос вставила коды. вышла ошибка ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:34 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:35 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка,Чтоб сгруппировать по годам. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:52 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, Сделала как у вас. Создала SRC и в запрос вставила коды. вышла ошибкау меня нет под рукой MSAccess, покажите SQL обоих запросов (только не картинкой а прямо SQL-текст вставьте сюда) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 17:54 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, Сделала как у вас. Создала SRC и в запрос вставила коды. вышла ошибкатак. уже вижу, по крайней мере это насчет того, что ваш qdfActions спрашивает DateClosed - у вас там в первом union select'е откуда-то взялось DateClosed - не должно его там быть, видимо вы по ошибке его туда вписали (вместо M) в Итоговом запросе исходного поля даты нет, он уже работает только с месяцами - которые делаются из этой даты в промежуточном запросе SRC -он для того и сделан, чтобы в каждом union сто раз Format(...) не повторять. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:05 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка,Чтоб сгруппировать по годам. вот смотрите, непоймучка1) чтобы каждый столбец месяца имел в названии еще и год 2) чтобы число столбцов месяцев оставалось неизменным + отдельный столбец ГОД, и для каждого года - по три строки с разными OPERATION В варианте(1) придется избавиться от явного перечисления имен столбцов в разделе PIVOT, где сейчас просто явно заданы имена месяцев в нужном порядке, т.к. число и имена месяцев постоянны - потому их и можно там перечислить. А вот если в именах столбцов будет присутствовать год, то заранее "предугадать" какие года есть в базе и перечислить их в PIVOT в общем случае нельзя (не прибегая к предварительному программному анализу) В свою очередь, после отказа от явного перечисления имен столбцов в PIVOT, мы получим: a) столбцы будут сформированы в зависимости от фактического наличия данных (т.е. например, если данных за январь нет - не будет январского столбца вообще) b) столбцы будут следовать в алфавитном порядке (т.е. не январь-декабрь, как сейчас, а Август-Январь) и поэтому, чтобы получить привычный порядок столбцов-месяцев, их придется именовать не по именам, а по порядковым номерам однако, самая большая засада в том, что в варианте(1) "заложено" ограничение, которое не даст вам обрабатывать записи более, чем за определенное количество лет. в MSAccess есть ограничение на число столбцов в таблице/запросе (255), а у вас каждый новый год добавляет в результат 24 столбца - поэтому, если не сделать в запросе доп.условие для отбора по годам, то лет так через десять ведения такой базы, ваш запрос просто перестанет работать. поэтому вариант(2) предпочтительнее, имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:15 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
ну и собственно, чтобы реализовать этот вариант(2), можно сделать так: 1) в запрос SRC в раздел SELECT добавить выражение вида Код: vbnet 1.
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:22 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
вдогонку - ну и само-собой, УБРАТЬ из запроса SRC условие для отбора по году WHERE Year(DateClosed) = 2015 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:26 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
если же вы, говоря "Чтоб сгруппировать по годам" имеете ввиду такой итоговый результат: OPERATION20142014%20152015%ИТОГОИТОГО%Поступившие заявки201004010060100Реализация105020503050Отказ105020503050 тогда 1) замените в запросе SRC Код: vbnet 1.
на Код: vbnet 1.
2) в Итоговом запросе замените Код: vbnet 1. 2. 3. 4. 5.
на Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:34 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, все получилось по годам. кроме "Реализация" и "Отказа" мне надо добавить Причины. перечислены в скриншоте. И тоже самое посчитать кол-во. и в %. кол-во причины "Неустроило время ответ" разделить на кол-во "поступившие заявки" * 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:38 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, Причины перечислены в столбце RefuseReasons. Это отдельный столбец. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:46 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, все получилось по годам. кроме "Реализация" и "Отказа" мне надо добавить Причины. перечислены в скриншоте. И тоже самое посчитать кол-во. и в %. кол-во причины "Отказ" разделить на кол-во "поступившие заявки" * 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:57 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smAinur.smнепоймучка, все получилось по годам. кроме "Реализация" и "Отказа" мне надо добавить Причины. перечислены в скриншоте. И тоже самое посчитать кол-во. и в %. кол-во причины "Неустроило время ответа" разделить на кол-во "поступившие заявки" * 100% ОШИБКА кроме "Реализация" и "Отказа" мне надо добавить Причины. перечислены в скриншоте. И тоже самое посчитать кол-во. и в %. кол-во причины "Неустроило время ответа" разделить на кол-во "ОТКАЗ" * 100%[/quot][/quot] ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 18:58 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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...) В смысле удобства оператора такой список кодов Причин можно получить в где-то форме, например из списка с мультивыбором, основанном на этом справочнике причин ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:07 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Бонус. "Не устроило" пишется раздельно. Ведь эти пункты клиенту демонстрируются?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:08 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, и как сделать? может кроме SRC создать новый запрос? Отдельно для причин ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:15 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, и как сделать? может кроме SRC создать новый запрос? Отдельно для причин ?так, стоп. я, видать, недопонял то есть, Реализация и Отказ - это отдельная песня (в поле DealStage) - и с ней мы разобрались, но КРОМЕ того, у вас есть ЕЩЕ одно поле (RefuseReasons), где пишутся причины отказа, так? 1) какого типа это поле? 2) показанная вами картинка со списком причин - еэто вы просто так, или у вас есть ОТДЕЛЬНАЯ таблица со списокм причин (типа справочник причин) 3) вы пишете "кроме Реализация и Отказа мне надо добавить" - добавить в ЭТОТ же запрос? в какое место, в каком порядке? можете как-то образец желаемого итогового результата показать для примера? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:26 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.smнепоймучка, и как сделать? может кроме SRC создать новый запрос? Отдельно для причин ?так, стоп. я, видать, недопонял то есть, Реализация и Отказ - это отдельная песня (в поле DealStage) - и с ней мы разобрались, но КРОМЕ того, у вас есть ЕЩЕ одно поле (RefuseReasons), где пишутся причины отказа, так? 1) какого типа это поле? 2) показанная вами картинка со списком причин - еэто вы просто так, или у вас есть ОТДЕЛЬНАЯ таблица со списокм причин (типа справочник причин) 3) вы пишете "кроме Реализация и Отказа мне надо добавить" - добавить в ЭТОТ же запрос? в какое место, в каком порядке? можете как-то образец желаемого итогового результата показать для примера? Да все верно. 1. Существует поле (RefuseReasons), где перечислены причины отказа как на скриншоте. (Тип String) выбирается галочкой. 2. Надо посчитать кол-во каждой причин. Например Кол-во записей со значением поле(DealStage) равным "Отказ" и со значением поле ПРичины отказа (RefuseReasons) равным "Не устроило время ответа". И Процент – как отношение количества отказных заявок по причине «Не устроило время ответа» к общему количеству отказных заявок. Кол-во "Не устроило время ответа"/ кол-во отказ *100 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:39 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, если все так, то да - можно и так. т.е. создаете еще один запрос (например REF) по аналогии с SRC - только для поля RefuseReasons причем, чтобы меньше потом менять в итоговом запросе, лучше сделать там этому полю выходной алиас с тем же именем, что и в запросе SRC (DealStage) вот в таком духе: Код: vbnet 1.
потом попробуйте (для начала) сделать ЕЩЕ один запрос, скопируйте в него целиком текст запроса 'Итоговый' замените там SRC на REF и посмотрите на результат (только суммы, проценты позже) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:40 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Создала REF для RefuseReasons. SELECT RefuseReasons, Format(DateClosed,"mmmm") AS M, Format(DateClosed,"yyyy") AS Y FROM qdfDeals WHERE Year(DateClosed)=2015; а Куда это писать. SELECT RefuseReasons AS DealStage,... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:46 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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?? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:48 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smAinur.smпропущено... кол-во причины "Неустроило время ответа" разделить на кол-во "ОТКАЗ" * 100%это можно сделать по аналогии с тем как, сейчас считается % к ОБЩЕМУ числу записей в Итоговом запросе посмотрите - там в одном из UNION-подзапросов есть inner join на вложенный под(select), который считает это общее число записей, типа Код: vbnet 1.
и это полученное число потом идет как знаменатель в расчете % текушего показателя - Count(1)/Min(S.N)*100 А для случая запроса с причинами вам надо в Итоговом запросе в аналогичном под-select'е посчитать НЕ общее число записей, а только отказы - т.е. добавить условие вида Код: vbnet 1.
и кстати, в ЭТОМ под-select'е надо выбирать именно FROM SRC (а не FROM REF), ибо отказы у вас - в SRC ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 19:54 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, не так быстро...... создала REF SELECT RefuseReasons, Format(DateClosed,"mmmm") AS M, Count(*) AS ord FROM qdfDeals WHERE Year(DateClosed)=2015 GROUP BY Format(DateClosed,"mmmm"), RefuseReasons; ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:00 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.smпропущено... кол-во причины "Неустроило время ответа" разделить на кол-во "ОТКАЗ" * 100%это можно сделать по аналогии с тем как, сейчас считается % к ОБЩЕМУ числу записей в Итоговом запросе посмотрите - там в одном из UNION-подзапросов есть inner join на вложенный под(select), который считает это общее число записей, типа Код: vbnet 1.
и это полученное число потом идет как знаменатель в расчете % текушего показателя - Count(1)/Min(S.N)*100 А для случая запроса с причинами вам надо в Итоговом запросе в аналогичном под-select'е посчитать НЕ общее число записей, а только отказы - т.е. добавить условие вида Код: vbnet 1.
и кстати, в ЭТОМ под-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 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:07 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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.
а вот тут: Ainur.sm1. Существует поле (RefuseReasons), где перечислены причины отказа как на скриншоте. (Тип String) выбирается галочкой. а что это за "галочки"? (начинаю подозревать плохое) уточните - вот у вас есть текстовое поле RefuseReasons в него что - можно вписать НЕСКОЛЬКО этих самых причин для ОДНОЙ записи? путем расстановки этих самых 'галочек' напротив нужных причин - и они все запишутся как значение этого поля для текущей записи? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:08 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкапропущено... это можно сделать по аналогии с тем как, сейчас считается % к ОБЩЕМУ числу записей в Итоговом запросе посмотрите - там в одном из UNION-подзапросов есть inner join на вложенный под(select), который считает это общее число записей, типа Код: vbnet 1.
и это полученное число потом идет как знаменатель в расчете % текушего показателя - Count(1)/Min(S.N)*100 А для случая запроса с причинами вам надо в Итоговом запросе в аналогичном под-select'е посчитать НЕ общее число записей, а только отказы - т.е. добавить условие вида Код: vbnet 1.
и кстати, в ЭТОМ под-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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:12 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.smпропущено... вот так Код: vbnet 1. 2.
а вот тут: Ainur.sm1. Существует поле (RefuseReasons), где перечислены причины отказа как на скриншоте. (Тип String) выбирается галочкой. а что это за "галочки"? (начинаю подозревать плохое) уточните - вот у вас есть текстовое поле RefuseReasons в него что - можно вписать НЕСКОЛЬКО этих самых причин для ОДНОЙ записи? путем расстановки этих самых 'галочек' напротив нужных причин - и они все запишутся как значение этого поля для текущей записи? Галочка для выбора из перечисленных причин. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:12 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкапропущено... вот так Код: vbnet 1. 2.
а вот тут: пропущено... а что это за "галочки"? (начинаю подозревать плохое) уточните - вот у вас есть текстовое поле RefuseReasons в него что - можно вписать НЕСКОЛЬКО этих самых причин для ОДНОЙ записи? путем расстановки этих самых 'галочек' напротив нужных причин - и они все запишутся как значение этого поля для текущей записи? Галочка для выбора из перечисленных причин.это я понимаю суть вопроса такова: для ОДНОЙ (текущей) записи в qdfDeals таким образом можно выбрать (галочкой) 1) только одну причину или 2) неколько причин - столько сколько оператор поставт галочек? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:17 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка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.
Вот что получилось Итоговый запрос 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; ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:19 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.smпропущено... Галочка для выбора из перечисленных причин.это я понимаю суть вопроса такова: для ОДНОЙ (текущей) записи в qdfDeals таким образом можно выбрать (галочкой) 1) только одну причину или 2) неколько причин - столько сколько оператор поставт галочек? Программа позволяет выбрать несколько причин. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:27 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкапропущено... Добавить - в смысле просто where добавить к тому, что было и все Код: vbnet 1. 2. 3.
Вот что получилось Итоговый запрос... в этом Итоговом надо заменить SRC на REF - везде кроме под-select'ов ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:28 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаа что это за "галочки"? (начинаю подозревать плохое) Подозрения наверняка оправдаются. Скорее всего галочки многозначное поле и надо проверять Value многозначного поля на соответствие условиям. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:29 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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 ( 'Январь','Январь%', 'Февраль','Февраль%', 'Март','Март%', 'Апрель','Апрель%', 'Май','Май%', 'Июнь','Июнь%', 'Июль','Июль%', 'Август','Август%', 'Сентябрь','Сентябрь%', 'Октябрь','Октябрь%', 'Ноябрь','Ноябрь%', 'Декабрь','Декабрь%', 'ИТОГО','ИТОГО%' ); ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:34 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкапропущено... это я понимаю суть вопроса такова: для ОДНОЙ (текущей) записи в qdfDeals таким образом можно выбрать (галочкой) 1) только одну причину или 2) неколько причин - столько сколько оператор поставт галочек? Программа позволяет выбрать несколько причин. Если так, то увы - похоже, ваше поле RefuseReasons - это т.н. МНОГОЗНАЧНОЕ поле, и в этом случае я никак не могу вам помочь - я с ними не знаком. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:40 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, А если только одну причину?? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:42 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, ПЛЗ. Если учитывать только одну причину...... (((( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 20:53 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, А если только одну причину?? Дело не в том, что вы (как юзер) станете заносить туда всегда строго только одну причину. Дело в том, что данное поле в СТРУКТУРЕ таблицы сделано как МНОГОЗНАЧНОЕ. А это - не просто текстовое поле, с ним стандартный человеческий SQL работать не умеет. Многозначные поля - это такая специальная 'ересь', попирающая реляционную стройность баз данных, которую Microsoft придумал в MSAccess 2007 - специально чтобы позлить всех нормальных людей, и чтобы работать с этими полями в запросах, добавил в свой офисный SQL какие-то невнятные костыли, на которых тут мало кому охота ходить. Вобщем, сочувствую - если найдете помощника по этим полям - считайте повезло ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2016, 21:09 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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-части первого Итогового запроса. При этом, то что написано тут красным - УЖЕ есть в первом Итоговом (по сути, это доп.суммарная строка для двух итоговых строк 'Отказ' и 'Реализация' и она НЕ имеет отношения к причинам), поэтому повторно эту (красную) часть в конечный запрос включать не надо. Итак, у нас остается только синяя часть запроса, которая и выбирает нужные нам данные по исходным причинам - и только эту часть мы и должны будем вставить в конечный объединенный запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 00:16 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
продолжение Итак, рассмотрим дорабатываемую часть запроса: 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 Вот именно в таком виде данная часть запроса для ПРИЧИН и должна быть ДОБАВЛЕНА в (первый) Итоговый запрос ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 00:22 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
завершение Итак, конечный текст запроса: запрос(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. запросы писал умозрительно, в данный момент проверить не на чем, поэтому неизбежны ошибки/очепятки, будьте готовы Успехов. --- ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 00:31 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Спасибо, А если учитывать, то что причины меняется, точнее если нет из вышеперечисленных то они вводят вручную ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 01:26 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, Спасибо, А если учитывать, то что причины меняется, точнее если нет из вышеперечисленных то они вводят вручную ?? во-первых, вы никак не пояснили -что это за список причин, есть ли он в отдельной таблице и т.п. во-вторых, поскольку вы сказали что поле RefuseReasons - текстовое, значит, в любом случае причины ваши записаны там словами. Как я оговорил выше, все запросы написаны исходя из того, что RefuseReasons - это обычное текстовое поле, которое хранит причину отказа, записанную в текстовом виде. Поэтому нам неважно как это значение там оказалось - выбрали его из какого-то списка значений, или записали туда программно или забили руками от балды - в нашем запросе группировка идет по полному текстовому значению этого поля. Так что если кто-то туда запишет свою уникальную причину, которой нет в вашем "виртуальном списке" причин, - она на общих основаниях займет в итоговом отчете отдельную строчку, да и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 02:13 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучказавершение Итак, конечный текст запроса: запрос(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. запросы писал умозрительно, в данный момент проверить не на чем, поэтому неизбежны ошибки/очепятки, будьте готовы Успехов. --- Результат получился. но с ошибками. См. скиншот. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 02:15 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 02:16 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 02:23 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, а в запросах SRC и REF при этом в условиях отбора год одинаковый указан? проверьте ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 02:38 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
проверил, считает как надо забил с вашего скриншота данные выставил в запросах SRC и REF условие WHERE Year(DateClosed)=2014 ... смотрите результат ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 03:08 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Спасибо... И еще один вопрос. как сгруппировать по менеджеру кол-во поступившие заявки и отказы, и причины отказы? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 21:53 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, Спасибо... И еще один вопрос. как сгруппировать по менеджеру кол-во поступившие заявки и отказы, и причины отказы? можно по аналогии с тем, как вот здесь я предлагал вам делать группировку по году в отдельном столбце - только вместо года использовать поле менеджера в итоге вы получите в результате имя менеджера в новом первом столбце, и его показателями во прочих столбцах UserordDealStageФевральФевраль%...Винокурова1Поступившие заявки2100...Винокурова2Реализация...Винокурова3Отказ233...Винокурова4Неустроило время ответа250...Иконников1Поступившие заявки1100...Иконников2Реализация117..................... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2016, 23:34 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
вдогонку: по сравнению с описанной ранее группировкой по году, при группировке по манагеру есть еще один нюанс: в Итоговом запросе в те union-select'ы, которые содержат под-select'ы (для вычисления %), следует добавить в INNER JOIN связь по этому полю User, т.е. например: там где было так Код: vbnet 1. 2. 3.
должно в итоге стать так: Код: vbnet 1. 2. 3. 4.
таких подзапросов (с под-select'ом) в Итоговом запросе 4 штуки, причем в двух из них ранее не было INNER JOIN - в них надо добавить INNER JOIN по полю User ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 00:07 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Спасибо. Отдельно для Usera создать запрос ? как SRC, REF ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 00:19 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
вдогонку-2: и еще, я заметил, что на вашей последней картинке в строке 'Поступившие заявки' в столбце процентов значение не 100% (в отличие от предыдущего варианта) в этом варианте, судя по всему, это значение означает процент заявок этого менеджера от ОБЩЕГО числа заявок в данном МЕСЯЦЕ если так, то для этого вам потребуется подправить еще один union-select в Итоговом запросе, а именно вот этот: Код: vbnet 1.
переделать так: Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 00:29 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучка, Спасибо. Отдельно для Usera создать запрос ? как SRC, REF нет, прямо в SRC и REF добавить это поле - т.е. в запросы, которые испольуются для Итогового кросс-запроса для данного варианта с группировками по юзеру (если это отдельная задача, для которой будете делать свои отдельные запросы, то делайте копии SRC и REF - и туда добавляйте поле USER'a) в таком духе Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 00:34 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
чуток лишнего там прихватил, надо FROM qdfDeals ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 00:37 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.smнепоймучка, Спасибо. Отдельно для Usera создать запрос ? как SRC, REF нет, прямо в SRC и REF добавить это поле - т.е. в запросы, которые испольуются для Итогового кросс-запроса для данного варианта с группировками по юзеру (если это отдельная задача, для которой будете делать свои отдельные запросы, то делайте копии SRC и REF - и туда добавляйте поле USER'a) Хотя зря я это, ни к чему делать копии - дописывайте прямо в существующие SRC, REF - там же просто выборка, группировок нет, доп.поле никак там не помешает. Т.е. прямо эту пару запросов SRC И REF (с полем User) можно будет использовать в обоих вариантах вашего Итогового кросс-запроса (и с группировкой по менеджеру, и без нее) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 00:52 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Ошибка синтаксиса 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 ( 'Январь','Январь%', 'Февраль','Февраль%', 'Март','Март%', 'Апрель','Апрель%', 'Май','Май%', 'Июнь','Июнь%', 'Июль','Июль%', 'Август','Август%', 'Сентябрь','Сентябрь%', 'Октябрь','Октябрь%', 'Ноябрь','Ноябрь%', 'Декабрь','Декабрь%', 'ИТОГО','ИТОГО%' ); ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 01:21 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 02:09 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
кроме того, на вскидку вижу пару ошибок, на которые точно может так ругаться: там, где вы добавили INNER JOIN, но забыли дописать по какому полю например: Код: vbnet 1.
выделенное вы забыли написать (в этом и в другом, аналогичном месте) кроме того в Код: vbnet 1.
к ON T.M=S.M - забыли добавить AND T.User=S.User (как это сделано в более другом подзапросе, о чем я пояснял ранее) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2016, 02:30 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучканепоймучкапропущено... нет, прямо в SRC и REF добавить это поле - т.е. в запросы, которые испольуются для Итогового кросс-запроса для данного варианта с группировками по юзеру (если это отдельная задача, для которой будете делать свои отдельные запросы, то делайте копии SRC и REF - и туда добавляйте поле USER'a) Хотя зря я это, ни к чему делать копии - дописывайте прямо в существующие SRC, REF - там же просто выборка, группировок нет, доп.поле никак там не помешает. Т.е. прямо эту пару запросов SRC И REF (с полем User) можно будет использовать в обоих вариантах вашего Итогового кросс-запроса (и с группировкой по менеджеру, и без нее) Если в REF - после добавление поле USER'a) в таком духе Код: sql 1. 2.
Будет ли учитывать с группировкой по причине и по менеджеру ?? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 11:18 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкапропущено... Хотя зря я это, ни к чему делать копии - дописывайте прямо в существующие SRC, REF - там же просто выборка, группировок нет, доп.поле никак там не помешает. Т.е. прямо эту пару запросов SRC И REF (с полем User) можно будет использовать в обоих вариантах вашего Итогового кросс-запроса (и с группировкой по менеджеру, и без нее) Если в REF - после добавление поле USER'a) в таком духе Код: sql 1. 2.
Будет ли учитывать с группировкой по причине и по менеджеру ?? Добавила в 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='Отказ'; ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 11:54 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкакроме того, на вскидку вижу пару ошибок, на которые точно может так ругаться: там, где вы добавили INNER JOIN, но забыли дописать по какому полю например: Код: vbnet 1.
выделенное вы забыли написать (в этом и в другом, аналогичном месте) кроме того в Код: vbnet 1.
к 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 12:32 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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.
выделенное лишнее М - это месяц, а в строчках ИТОГО у нас данные за год, там поле М нигде не должно фигурировать ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 12:55 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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.
Синим выделены добавки, внесенные в прежний Итоговый запрос чтобы он делал разбивку/группировку данных по менеджерам Красным выделены имена исходных запросов SRC и REF как уже ранее было сказано, вобщем-то не требуется для нового Итогового запроса (по менеджерам) делать какие-то новые/отдельные запросы SRC2 и REF2 - можно использовать прежние, в которые просто добавить поле User в раздел SELECT Зеленым выделены КОММЕНТАРИИ, поясняющие для каждого union-select'а смысл данных, которые там выбираются В рабочей версии запроса зеленые строки надо удалить. Пробуйте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 13:47 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
вдогонку - см. рабочий запрос в архиве ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 13:54 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкану и собственно, чтобы реализовать этот вариант(2), можно сделать так: 1) в запрос SRC в раздел SELECT добавить выражение вида Код: vbnet 1.
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 ? чтоб сортировка по месяц и годам было? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 15:55 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, посмотрите как вариант ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 15:57 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, база города и регионы ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 15:59 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкану и собственно, чтобы реализовать этот вариант(2), можно сделать так: 1) в запрос SRC в раздел SELECT добавить выражение вида Код: vbnet 1.
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 - и в итоговой кросс-таблице у вас появится новый столбец год. Методика доработки текста запроса в данном случае абсолютно аналогична. Успехов. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 16:55 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 17:09 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкану и собственно, чтобы реализовать этот вариант(2), можно сделать так: 1) в запрос SRC в раздел SELECT добавить выражение вида Код: vbnet 1.
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.
Добавила год, но в % не правильно считает((( в чем ошибка?? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 18:34 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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.
Добавила год, но в % не правильно считает((( в чем ошибка?? а в невнимательности непоймучка2) ТОЧНО ТАК ЖЕ как поле User добавлялось в Итоговый запрос для группировки по менеджерам (см. ВСЕ выделенное синим в предыдущем конечном тексте Итогового запроса) - так же добавить во все эти же места новое поле Y - и в итоговой кросс-таблице у вас появится новый столбец год. обратите внимание на процентые union-select'ы, сличайте ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 18:50 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm Добавила год, но в % не правильно считает((( в чем ошибка?? хотя возможно, в случае группировки по годам вам логика процентов нужна другая? возьмите за образец мои комментарии к кажому union-select'у вот этом тексте и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 19:15 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.sm Добавила год, но в % не правильно считает((( в чем ошибка?? хотя возможно, в случае группировки по годам вам логика процентов нужна другая? возьмите за образец мои комментарии к кажому union-select'у вот этом тексте и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется какое??? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 19:19 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.sm Добавила год, но в % не правильно считает((( в чем ошибка?? хотя возможно, в случае группировки по годам вам логика процентов нужна другая? возьмите за образец мои комментарии к кажому union-select'у вот этом тексте и уточните по каждой позиции новые коментарии - какая логика подсчета процентов требуется для реализ Итого сумма кол-во реализ:/ сумма кол-во поступив *100% для отказа Итого кол-во сумма отказа/сумма кол-во поступ *100% ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 19:25 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка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.
Итог% неправильно считает. Это без User ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 19:43 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
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.
Итог% неправильно считает. Это без User ----------------------------------------------- -------------------------- ------------------- -------------------------------------------- И тоже самое с Users. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 19:46 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
так, давайте без юзеров сперва - ибо текст запроса вы приводите без юзеров выполните запрос, поставьте столбцы итогов рядом с операциями сделайте скрин, и напишите конкретно, какие значения по-вашему не те ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 20:16 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкатак, давайте без юзеров сперва - ибо текст запроса вы приводите без юзеров выполните запрос, поставьте столбцы итогов рядом с операциями сделайте скрин, и напишите конкретно, какие значения по-вашему не те Код: 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.
кол-во Поступившие заявки 100%. реализация = кол-во реализ /кол-во поступ заявки *100% Отказ= кол-во отказов /кол-во поступив заявки *100% Итог реализация тоже самое только сумма всех кол-во = сумма всех кол-во за 12 месяцев реализ /сумма всех кол-во за 12 месяцев поступ заявки *100% Итог Отказ= сумма всех кол-во за 12 месяцев отказов /сумма всех кол-во за 12 месяцев поступив заявки *100% ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 20:52 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.smнепоймучкатак, давайте без юзеров сперва - ибо текст запроса вы приводите без юзеров выполните запрос, поставьте столбцы итогов рядом с операциями сделайте скрин, и напишите конкретно, какие значения по-вашему не те Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
кол-во Поступившие заявки 100%. реализация = кол-во реализ /кол-во поступ заявки *100% Отказ= кол-во отказов /кол-во поступив заявки *100% Итог реализация тоже самое только сумма всех кол-во = сумма всех кол-во за 12 месяцев реализ /сумма всех кол-во за 12 месяцев поступ заявки *100% Итог Отказ= сумма всех кол-во за 12 месяцев отказов /сумма всех кол-во за 12 месяцев поступив заявки *100% думаю, дело в этом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
попробуйте ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 21:17 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur.smпропущено... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
кол-во Поступившие заявки 100%. реализация = кол-во реализ /кол-во поступ заявки *100% Отказ= кол-во отказов /кол-во поступив заявки *100% Итог реализация тоже самое только сумма всех кол-во = сумма всех кол-во за 12 месяцев реализ /сумма всех кол-во за 12 месяцев поступ заявки *100% Итог Отказ= сумма всех кол-во за 12 месяцев отказов /сумма всех кол-во за 12 месяцев поступив заявки *100% думаю, дело в этом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
попробуйте Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 21:42 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
так, еще вот что: в одном из только что подправленных под-запросов надо бы уточнить еще вот это: Код: sql 1. 2. 3.
и заодно аналогичное уточнение в еще одном подзапросе: Код: sql 1. 2. 3.
допишите ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 21:51 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкатак, еще вот что: в одном из только что подправленных под-запросов надо бы уточнить еще вот это: Код: sql 1. 2. 3.
и заодно аналогичное уточнение в еще одном подзапросе: Код: sql 1. 2. 3.
допишите дописала Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 21:59 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur, Вы там давайте с умом резвитесь-то А разделе PIVOT задается перечень ИМЕН столбцов, которые НАДО показывать на выходе в указанном порядке (из числа тех, что TRANSFORM формирует из исходных выбранных строк) PIVOT M - означает, что в столбцы будет разворачиваться значения поля М - а там имена месяцев - в половине подзапросов, а в другой половине - имя месяца с символом процента (М & '%') кода вы исправили в PIVOT список столбцов с 'Январь','Январь%', на 'Январь','ЯнварьПроц',... вы таким образом попросили выводить столбец 'ЯнварьПроц' - который НЕ ФОРМИРУЕТСЯ никаким подзапросом и исключили из итога столбец 'Январь%' - который ФОРМИРУЕТСЯ подзапросом: Код: sql 1. 2. 3.
т.е. легким движением руки вы просто вывели 12 пустых столбцов с процентами это к тому, что подобные изменения надо делать синхронно - в двух этих местах если меняете перечень имен столбцов в PIVOT - проверьте подзапросы, дабы сохранить соответствие Т.е. для вашего случая в указанном подзапросе надо заменить T.M & "%" на T.M & "Проц" ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 22:10 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучкаAinur, Вы там давайте с умом резвитесь-то А разделе PIVOT задается перечень ИМЕН столбцов, которые НАДО показывать на выходе в указанном порядке (из числа тех, что TRANSFORM формирует из исходных выбранных строк) PIVOT M - означает, что в столбцы будет разворачиваться значения поля М - а там имена месяцев - в половине подзапросов, а в другой половине - имя месяца с символом процента (М & '%') кода вы исправили в PIVOT список столбцов с 'Январь','Январь%', на 'Январь','ЯнварьПроц',... вы таким образом попросили выводить столбец 'ЯнварьПроц' - который НЕ ФОРМИРУЕТСЯ никаким подзапросом и исключили из итога столбец 'Январь%' - который ФОРМИРУЕТСЯ подзапросом: Код: sql 1. 2. 3.
т.е. легким движением руки вы просто вывели 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 22:22 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Ainur.sm, этот процент считает запрос Код: sql 1. 2. 3.
и это /* процент числа заявок менеджера за месяц от общего числа заявок за этот месяц текущего года */ на скрине вижу цифры которые соответствуют данному правилу если нужен /* процент числа заявок менеджера за месяц от общего числа заявок менеджера за текущий год */ Код: sql 1. 2. 3.
в этом был вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2016, 22:43 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, да!! спасибо))) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2016, 00:21 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
http://www.sql.ru/forum/1199887/access-nado-sdelat-narastaushhiy-itog-po-mesyacam-chtoby-uchityvalsya-za-predydushhie-goda непоймучка, авторавтор ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2016, 14:18 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
непоймучка, Помогите Строка отчета «Поступило заявок всего» Реализация + отказа. Количество всех записей таблицы Заявки с разбивкой по месяцам. 1.2. Процент в таблице отчета по строке «Поступило заявок всего» - это отношение количества записей за месяц к общему количеству записей за год в процентном выражении. 1.3. Строка отчета « Светлана» - количество всех записей таблицы Заявки с разбивкой по месяцам со значением поля «Менеджер проекта» из таблицы Сотрудники = « Светлана». 1.4. Процент в таблице отчета по строке « Светлана». – это отношение количества отобранных записей (записей со значением « Светлана») за месяц к общему количеству записей за месяц. 1.5. Так далее для всех значений поля «Менеджер проекта» из таблицы Сотрудники. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2016, 10:49 |
|
Как использовать Count "с условиями" с разбивкой по заданным периода(по месяцам) Access
|
|||
---|---|---|---|
#18+
Как сделать чтобы показывала только 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2016, 11:42 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1613813]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
278ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 679ms |
0 / 0 |