Нужна помощь по простенькому запросу

danila_vn
Дата: 18.11.2009 13:15:17
Есть несколько одинаковых по структуре таблиц. Привожу оригинальное название полей:

Код;НО; НиО;БС4;ЛС;АС;Валюта;Остаток ГРН;Остаток ВАЛ

Такие таблицы есть за каждый день. Количество строк в каждой таблице очень большое - больше 250 тыс.

Задача: Сгруппировать по полю "АС" и вычислить сумму по полю "Остаток ГРН" в каждом дне и далее высчилисть разницу между данными по полю "АС" в двух разных днях. Названия таблиц в виде даты, например: 20090930 и 20091031


Заранее огромное спасибо за помощь!!!
IFK
Дата: 18.11.2009 13:36:00
Не совсем понятно, что и куда. Эти таблицы на форме или результат идет в форму или это отчеты?

Запишите как запрос SELECT Код,НО,НиО,БС4,ЛС,АС,Валюта,Sum(Остаток ГРН) as SumOstGRN,Остаток ВАЛ GROUP АС - будет группировка с суммой по полю для одного дня (таблицы).

В коде открывайте созданные запросы как рекордсеты и вычисляйте разницу между полями.
а.четакова
Дата: 18.11.2009 13:43:54
danila_vn
Задача: Сгруппировать по полю "АС" и вычислить сумму по полю "Остаток ГРН" в каждом дне и далее высчилисть разницу между данными по полю "АС" в двух разных днях. Названия таблиц в виде даты, например: 20090930 и 20091031

можно в таком духе
select [АС], sum([Остаток ГРН]) as [Остаток] from (
select [АС], [Остаток ГРН] from [20090931] union all
select [АС], -[Остаток ГРН] from [20090930]
) group by [АС]
гм,
Дата: 18.11.2009 13:46:25
IFK
...
SELECT Код,НО,НиО,БС4,ЛС,Валюта АС, Sum(Остаток ГРН) as SumOstGRN ,Остаток ВАЛ GROUP BY АС
...
danila_vn
Дата: 18.11.2009 15:55:59
а.четакова
danila_vn
Задача: Сгруппировать по полю "АС" и вычислить сумму по полю "Остаток ГРН" в каждом дне и далее высчилисть разницу между данными по полю "АС" в двух разных днях. Названия таблиц в виде даты, например: 20090930 и 20091031

можно в таком духе
select [АС], sum([Остаток ГРН]) as [Остаток] from (
select [АС], [Остаток ГРН] from [20090931] union all
select [АС], -[Остаток ГРН] from [20090930]
) group by [АС]



Работает!!! Огромное спасибо!!
danila_vn
Дата: 18.11.2009 15:56:58
IFK

В коде открывайте созданные запросы как рекордсеты и вычисляйте разницу между полями.


Расскажите, если не сложно как это сделать
IFK
Дата: 18.11.2009 16:23:29
DoCmd.RunSQL "строка SQL"
db.Execute("строка SQL")
db.QueryDef("имя сохраненного запроса").Execute
Владимир Саныч
Дата: 18.11.2009 17:47:52
IFK
DoCmd.RunSQL "строка SQL"
db.Execute("строка SQL")
db.QueryDef("имя сохраненного запроса").Execute

Это Вы для селектов такое предлагаете???
IFK
Дата: 18.11.2009 17:55:20
Нет, это для запуска запросов из кода.

А если рекордсет открыть, то
Set rs=db.OpenRecordset("строка SQL")

Прошу прощения, пропустил в первом посте.