|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Можно ли создать несколько строк при помощи запроса SELECT ? У меня есть запрос, который считает суммы поступлений за определенный период, расходы и прочие вычисления на основе этих цифр. Я примерно понимаю как создать результатирующие поля и присваивать им заголовки - но все это получается в одну строчку. Хотелось бы сделать это по месяцам и в одной табличке, чтобы набор вычисленных значений по каждому месяцу шел на новой строке. Сохранять это не надо. Запускаю из вкладки Запросы. Пример того что есть: SELECT Sum(IIf((Деньги.Операция)="Получил" Or (Деньги.Операция)="ПолучилИП",Деньги.Сумма,0)) AS ДоходВсегоБезЗаймов, Sum(IIf((Деньги.Операция)="Взял взаймы" and (Деньги.Контрагент)<>"А",Деньги.Сумма,0)) AS ВсегоЗаймовБезА, ДоходВсегоБезЗаймов+ВсегоЗаймовБезАлферова AS ДоходОбщий, FROM Деньги WHERE (((([Деньги].[Дата]))>#4/30/2015# And (([Деньги].[Дата]))<#6/1/2015#)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 01:33 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 02:03 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Я вставил Вашу строку в конец своего запроса и оно сработало - спасибо ! А как бы теперь добавить слева колонку с названиями месяцев ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 11:26 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
up ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 09:41 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 10:50 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
:) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 10:58 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Predeclared:)) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 11:04 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
?Format(Now(),"mmm") ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 11:19 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 11:23 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
__Michelle, И? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 11:27 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Predeclared__Michelle, И? ....прилепила к тому, что было.... Чтобы ТС было проще и понятней наращивать возможности запроса.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 11:33 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Понял. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 11:35 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
спасибо - буду изучать на досуге ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 16:29 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Единственное, что непонятно сразу - что это за ссылка на первоначальное сообщение - это просто ссылка или должен был закачиваться какой-то пример ? Если пример - то у меня он почему-то не закачивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 16:33 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
SergeyKKЕдинственное, что непонятно сразу - что это за ссылка на первоначальное сообщение - это просто ссылка или должен был закачиваться какой-то пример ? Если пример - то у меня он почему-то не закачивается.Это просто ссылка, поясняющая, почему применяется Right(Format(Дата, "yyyy mm"),2), а не иное, более естественное и привычное выражение - чтобы не было конфликта с условием группировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2016, 16:53 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
В итоге я ничего и не понял. Предыстория: Я немного понимаю VBA (в контексте Word) и знаю функции обработки строк типо Right, Left; понимаю, что делает Format, могу создать массив, перебрать список и т.д.. В Word справка по VBA просто великолепная. В Access почему-то справка просто куцая и есть подозрение, что в большинстве случаев при выделении команды и F1 выскакивает справка по VBA, а не SQL (а может Choose там отличается). В итоге мне не хватает базового понимания SQL запросов - их структуры. Пока я понял так, что в них нет переменных в чистом виде, которые можно использовать, не показывая на экране - они объявляются при помощи AS но сразу куда-то выкладываются в виде названия столбца, что мне не очень удобно. Далее - что обрабатывает SQL запрос - по идее записи. Можно ли сделать несколько запросов/комманд подряд из одного Запроса, чтобы последующий запрос обрабатывал результаты первого, а не первоначальные записи. Как - сослаться на новые названия столбцов, создаваемых первым запросом - но предложенный пример ничего такого не предлагает... Когда я что-то пишу после ; то выдается ошибка. Все что я понял про SQL - это запрос как в моем примере. Соответственно - куда засовывать предлагаемую строку - 1) если она идет отдельно, то в каком месте в запросе ее надо вставлять 2) если ее надо вставить в Where (или Нaving) чтобы сразу обрабатывать Year([Деньги].[Дата]), то в итоге получатся данные только за один месяц (ведь Choose показывает одно выбранное значение по индексу) - мне что надо будет сделать 12 строк кода в запросе чтобы получить одну таблицу ? Ведь список названий месяцев - это то, из чего выбирается... ? 3) как узнать точные названия месяцев - они будут в сокращенном виде из трех букв или полностью, на русском или на английском ? В справке по команде я не нашел список этих пременных. Пробовал по-разному, но сижу в тупике. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2016, 06:33 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
Predeclared?Format(Now(),"mmm") что означает знак вопроса - это часть команды или типо обращения к собеседнику,дескать может такая команда сойдет ? при чем тут Now если я обрабатываю записи, а не определяю текущую дату ? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2016, 06:47 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
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), а список это "янв","фев",......... Каким сделаете список, так и будут выглядеть названия месяцев. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2016, 13:18 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
SergeyKKPredeclared?Format(Now(),"mmm") что означает знак вопроса - это часть команды или типо обращения к собеседнику,дескать может такая команда сойдет ?Это синтаксис окна Immediate (окна отладки) VBA. Попробуйте - увидите, каков результат. Окно вызывается Ctrl-G. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2016, 13:24 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
[quot __Michelle] AS для того и служит, чтобы именовать "результирующие поля", а не объявлять "переменные". [quot автор] Так переменные в чистом виде в SQL запросах есть ? Я видел только Recordset, но это не совсем то. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 00:40 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
С дебаггером я разобрался - раньше никогда его не использовал, т.к. 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 или как отдельная строка ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 00:55 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
в справке сказано так: 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 - пропущен оператор В общем - мне бы конкретный пример как куда что поместить, чтобы к месячным данным добавить слева название полей. Указание отдельных функций мне мало что дает, т.к. справка по ним для обучения не годится, а Вы не пишите как эту функции привязываются к запросу, т.е. к данным из таблиц или по результатам запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 01:04 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
SergeyKKChoose(Right(Format(([Деньги].[Дата], "yyyy mm"),2),"янв","фев","март","апр","май","июнь","июль","август","сентябрь","октябрь","ноябрь","декабрь"); -------------------- в такой строке ошибка в Format - пропущен операторЛишняя скобка. Помечена красным. SergeyKK В общем - мне бы конкретный пример как куда что поместить , чтобы к месячным данным добавить слева название полей. Указание отдельных функций мне мало что дает, т.к. справка по ним для обучения не годится , а Вы не пишите как эту функции привязываются к запросу , т.е. к данным из таблиц или по результатам запроса.Все уже было сказано, неоднократно. 1. "Что": выражение Choose(Right(Format(Дата, "yyyy mm"),2),"янв","фев",.........). Естественно, список значений (названия месяцев) следует дополнить. 2. "Куда": в список полей запроса. А чтоб слева - поставьте это выражение первым элементом в списке. 3. "Как": через запятую. Мне справка по функциям для обучения и работы очень даже всегда годилась. По поводу "привязки функций к запросам" - что здесь объяснять-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2016, 18:37 |
|
Можно ли создать несколько строк при помощи запроса SELECT Sum ?
|
|||
---|---|---|---|
#18+
С трудом догадался (вот это совсем), что команду Format надо поместить в существующую инструкцию Select до команды Sum. В итоге сработало - спасибо. А почему в immediate не срабатывает ("неверное внешнее имя") ?Format([Деньги].[Дата], "yyyy mm") да и ?Choose(Right(Format([Деньги].[Дата], "yyyy mm"),2),"Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь") Что здесь является внешним именем - [Деньги].[Дата] ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2016, 04:34 |
|
|
start [/forum/topic.php?fid=45&fpage=114&tid=1613975]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 334ms |
total: | 458ms |
0 / 0 |