powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли создать несколько строк при помощи запроса SELECT Sum ?
24 сообщений из 24, страница 1 из 1
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39138744
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли создать несколько строк при помощи запроса SELECT ?
У меня есть запрос, который считает суммы поступлений за определенный период, расходы и прочие вычисления на основе этих цифр. Я примерно понимаю как создать результатирующие поля и присваивать им заголовки - но все это получается в одну строчку. Хотелось бы сделать это по месяцам и в одной табличке, чтобы набор вычисленных значений по каждому месяцу шел на новой строке. Сохранять это не надо. Запускаю из вкладки Запросы.

Пример того что есть:
SELECT Sum(IIf((Деньги.Операция)="Получил" Or (Деньги.Операция)="ПолучилИП",Деньги.Сумма,0)) AS ДоходВсегоБезЗаймов, Sum(IIf((Деньги.Операция)="Взял взаймы" and (Деньги.Контрагент)<>"А",Деньги.Сумма,0)) AS ВсегоЗаймовБезА, ДоходВсегоБезЗаймов+ВсегоЗаймовБезАлферова AS ДоходОбщий,
FROM Деньги
WHERE (((([Деньги].[Дата]))>#4/30/2015# And (([Деньги].[Дата]))<#6/1/2015#))
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39138751
GROUP BY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
GROUP BY Format([Деньги].[Дата], "yyyy mm")
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39138804
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вставил Вашу строку в конец своего запроса и оно сработало - спасибо ! А как бы теперь добавить слева колонку с названиями месяцев ?
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148660
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
up
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148677
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
Choose(Right(Format(Дата, "yyyy mm"),2),"янв","фев",.........)
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148679
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148681
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared:))
?
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148687
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Format(Now(),"mmm")
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148690
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148691
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle,

И?
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148698
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Predeclared__Michelle,

И? ....прилепила к тому, что было....
Чтобы ТС было проще и понятней наращивать возможности запроса.)))
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148700
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял. :)
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148791
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо - буду изучать на досуге
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148794
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственное, что непонятно сразу - что это за ссылка на первоначальное сообщение - это просто ссылка или должен был закачиваться какой-то пример ? Если пример - то у меня он почему-то не закачивается.
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39148800
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKKЕдинственное, что непонятно сразу - что это за ссылка на первоначальное сообщение - это просто ссылка или должен был закачиваться какой-то пример ? Если пример - то у меня он почему-то не закачивается.Это просто ссылка, поясняющая, почему применяется Right(Format(Дата, "yyyy mm"),2),
а не иное, более естественное и привычное выражение - чтобы не было конфликта с условием группировки.
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39154207
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге я ничего и не понял.
Предыстория:
Я немного понимаю VBA (в контексте Word) и знаю функции обработки строк типо Right, Left; понимаю, что делает Format, могу создать массив, перебрать список и т.д.. В Word справка по VBA просто великолепная. В Access почему-то справка просто куцая и есть подозрение, что в большинстве случаев при выделении команды и F1 выскакивает справка по VBA, а не SQL (а может Choose там отличается).

В итоге мне не хватает базового понимания SQL запросов - их структуры. Пока я понял так, что в них нет переменных в чистом виде, которые можно использовать, не показывая на экране - они объявляются при помощи AS но сразу куда-то выкладываются в виде названия столбца, что мне не очень удобно. Далее - что обрабатывает SQL запрос - по идее записи. Можно ли сделать несколько запросов/комманд подряд из одного Запроса, чтобы последующий запрос обрабатывал результаты первого, а не первоначальные записи. Как - сослаться на новые названия столбцов, создаваемых первым запросом - но предложенный пример ничего такого не предлагает... Когда я что-то пишу после ; то выдается ошибка.

Все что я понял про SQL - это запрос как в моем примере. Соответственно - куда засовывать предлагаемую строку -
1) если она идет отдельно, то в каком месте в запросе ее надо вставлять
2) если ее надо вставить в Where (или Нaving) чтобы сразу обрабатывать Year([Деньги].[Дата]), то в итоге получатся данные только за один месяц (ведь Choose показывает одно выбранное значение по индексу) - мне что надо будет сделать 12 строк кода в запросе чтобы получить одну таблицу ? Ведь список названий месяцев - это то, из чего выбирается... ?
3) как узнать точные названия месяцев - они будут в сокращенном виде из трех букв или полностью, на русском или на английском ? В справке по команде я не нашел список этих пременных.
Пробовал по-разному, но сижу в тупике.
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39154213
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Predeclared?Format(Now(),"mmm")
что означает знак вопроса - это часть команды или типо обращения к собеседнику,дескать может такая команда сойдет ?
при чем тут Now если я обрабатываю записи, а не определяю текущую дату ?
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39154470
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKKВ итоге я ничего и не понял. ...
сижу в тупикеВот и я теперь в тупике - как объяснять, если ответы по дороге причудливым образом трансформируются?
Но попробую.
Сначала пишетеавтор Я примерно понимаю как создать результатирующие поля и присваивать им заголовки , что вполне обычно, а затемавторя понял так, что в них (т.е., SQL-запросах) нет переменных в чистом виде, которые можно использовать, не показывая на экране - они объявляются при помощи AS но сразу куда-то выкладываются в виде названия столбца , а это уже что-то невероятное...
AS для того и служит, чтобы именовать "результирующие поля", а не объявлять "переменные".
авторкуда засовывать предлагаемую строку -Какую строку? Эту - Choose(Right(Format(Дата, "yyyy mm"),2),"янв","фев",.........)?
автор1) если она идет отдельно, то в каком месте в запросе ее надо вставлятьНепонятно, что такое в данном случае "идет отдельно".
засовывать Размещать нужно в списке полей, формируемых запросом, а именно,
SELECT <f1>, <f2>, Choose(Right(Format(Дата, "yyyy mm"),2),"янв","фев",.........) AS <название>,.....
автор2) если ее надо вставить в Where (или Нaving) чтобы сразу обрабатывать Year([Деньги].[Дата]), то в итоге получатся данные только за один месяц (ведь Choose показывает одно выбранное значение по индексу) - мне что надо будет сделать 12 строк кода в запросе чтобы получить одну таблицу ? Ведь список названий месяцев - это то, из чего выбирается... ?Ничего не поняла, простите.
автор3) как узнать точные названия месяцев - они будут в сокращенном виде из трех букв или полностью, на русском или на английском ? В справке по команде я не нашел список этих пременных.По какой команде - Choose? (Вообще-то, это функция...)
Названия месяцев будут таким, какими Вы их напишете.
В Choose(Right(Format(Дата, "yyyy mm"),2),"янв","фев",.........) номер позиции списка это Right(Format(Дата, "yyyy mm"),2), а список это "янв","фев",.........
Каким сделаете список, так и будут выглядеть названия месяцев.
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39154475
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKKPredeclared?Format(Now(),"mmm")
что означает знак вопроса - это часть команды или типо обращения к собеседнику,дескать может такая команда сойдет ?Это синтаксис окна Immediate (окна отладки) VBA.
Попробуйте - увидите, каков результат.
Окно вызывается Ctrl-G.
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39155160
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot __Michelle]
AS для того и служит, чтобы именовать "результирующие поля", а не объявлять "переменные".
[quot автор]
Так переменные в чистом виде в SQL запросах есть ? Я видел только Recordset, но это не совсем то.
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39155162
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С дебаггером я разобрался - раньше никогда его не использовал, т.к. Watch было достаточно.

Правда в immediate не срабатывает
?Format([Деньги].[Дата], "yyyy mm")
- неверное внешнее имя... Вроде у меня открыта только одна база, открыто окно запроса - все равно не находит. Наверное надо как-то сослаться на название открытой базы данных. Пробовал так:
?Format(records[Деньги].[Дата], "yyyy mm")
и по-другому несколько вариантов
но не угадал.

-------------------------------------
Размещать нужно в списке полей, формируемых запросом, а именно,
SELECT <f1>, <f2>, Choose(Right(Format(Дата, "yyyy mm"),2),"янв","фев",.........) AS <название>,....

-------------------------------------
Что такое <f1>, <f2> - это название полей в таблице, те что суммируются и помещаются в As ? Пример в справке работает со списком значений, которые указаны прямо в коде - и это легко. А как выбрать нужные данные ? Этот Select идет вместо моего Select Sum или как отдельная строка ?
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39155165
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в справке сказано так:
SELECT [предикат] { * | таблица.* | [таблица.]поле_1
[AS псевдоним_1] [, [таблица.]поле_2 [AS псевдоним_2] [, ...]]}
FROM выражение [, ...] [IN внешняяБазаДанных]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

---------------------
но у меня Sum все суммирует по определенной схеме (видно из запроса), т.е. мне поля в чистом виде не нужны.



--------------------
Choose(Right(Format(([Деньги].[Дата], "yyyy mm"),2),"янв","фев","март","апр","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь");
--------------------
в такой строке ошибка в Format - пропущен оператор




В общем - мне бы конкретный пример как куда что поместить, чтобы к месячным данным добавить слева название полей. Указание отдельных функций мне мало что дает, т.к. справка по ним для обучения не годится, а Вы не пишите как эту функции привязываются к запросу, т.е. к данным из таблиц или по результатам запроса.
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39155932
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyKKChoose(Right(Format(([Деньги].[Дата], "yyyy mm"),2),"янв","фев","март","апр","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь");
--------------------
в такой строке ошибка в Format - пропущен операторЛишняя скобка. Помечена красным.

SergeyKK В общем - мне бы конкретный пример как куда что поместить , чтобы к месячным данным добавить слева название полей. Указание отдельных функций мне мало что дает, т.к. справка по ним для обучения не годится , а Вы не пишите как эту функции привязываются к запросу , т.е. к данным из таблиц или по результатам запроса.Все уже было сказано, неоднократно.
1. "Что": выражение Choose(Right(Format(Дата, "yyyy mm"),2),"янв","фев",.........).
Естественно, список значений (названия месяцев) следует дополнить.
2. "Куда": в список полей запроса. А чтоб слева - поставьте это выражение первым элементом в списке.
3. "Как": через запятую.
Мне справка по функциям для обучения и работы очень даже всегда годилась.
По поводу "привязки функций к запросам" - что здесь объяснять-то?
...
Рейтинг: 0 / 0
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
    #39161556
SergeyKK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С трудом догадался (вот это совсем), что команду Format надо поместить в существующую инструкцию Select до команды Sum. В итоге сработало - спасибо.

А почему в immediate не срабатывает ("неверное внешнее имя")
?Format([Деньги].[Дата], "yyyy mm")
да и
?Choose(Right(Format([Деньги].[Дата], "yyyy mm"),2),"Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь")

Что здесь является внешним именем - [Деньги].[Дата] ???
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли создать несколько строк при помощи запроса SELECT Sum ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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