powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / выборка по валютам
20 сообщений из 20, страница 1 из 1
выборка по валютам
    #39894076
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!
Есть таблица:
namesummavalutatipАндрей100рубльприходАндрей1рубльрасходАндрей200долларприходАндрей2долларрасходАндрей300европриходАндрей3еврорасходАлексей400рубльприходАлексей4рубльрасходАлексей500долларприходАлексей5долларрасходАлексей600европриходАлексей6еврорасходВиталий700рубльприходВиталий7рубльрасходВиталий800долларприходВиталий8долларрасходВиталий900европриходВиталий9еврорасход
Хочу получить при помощи запроса вот такой результат:
nameрубльдолларевроАндрей99198297Алексей396495594Виталий693792891
Помогите пожалуйста!
Спасибо!
...
Рейтинг: 0 / 0
выборка по валютам
    #39894080
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abisma2008,


Код: sql
1.
2.
3.
4.
5.
TRANSFORM Sum(валюта.summa) AS [Sum-summa]
SELECT валюта.name
FROM валюта
GROUP BY валюта.name
PIVOT валюта.valuta;



только вместо моей таблицы "валюта" вставьте ваше имя аксесовской таблицы
...
Рейтинг: 0 / 0
выборка по валютам
    #39894083
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abisma2008,

Или в разделе где выводятся суммы еще надо разницу приход/расход учесть, остаток посчитать?
...
Рейтинг: 0 / 0
выборка по валютам
    #39894084
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,

Да).
...
Рейтинг: 0 / 0
выборка по валютам
    #39894118
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,
Вот как я делаю, но очень огромный код получился(:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT names.name, рубль_приход.summa-рубль_расход.summa AS рубль, доллар_приход.summa-доллар_расход.summa AS доллар, евро_приход.summa-евро_расход.summa AS евро
FROM (SELECT Таблица1.name, Sum(Таблица1.summa) AS summa
FROM Таблица1
WHERE (((Таблица1.valuta)="доллар") AND ((Таблица1.tip)="приход"))
GROUP BY Таблица1.name)  AS доллар_приход RIGHT JOIN ((SELECT Таблица1.name, Sum(Таблица1.summa) AS summa
FROM Таблица1
WHERE (((Таблица1.valuta)="доллар") AND ((Таблица1.tip)="расход"))
GROUP BY Таблица1.name)  AS доллар_расход RIGHT JOIN ((SELECT Таблица1.name, Sum(Таблица1.summa) AS summa
FROM Таблица1
WHERE (((Таблица1.valuta)="евро") AND ((Таблица1.tip)="расход"))
GROUP BY Таблица1.name)  AS евро_расход RIGHT JOIN ((SELECT Таблица1.name, Sum(Таблица1.summa) AS summa
FROM Таблица1
WHERE (((Таблица1.valuta)="евро") AND ((Таблица1.tip)="приход"))
GROUP BY Таблица1.name)  AS евро_приход RIGHT JOIN ((SELECT Таблица1.name, Sum(Таблица1.summa) AS summa
FROM Таблица1
WHERE (((Таблица1.valuta)="рубль") AND ((Таблица1.tip)="расход"))
GROUP BY Таблица1.name)  AS рубль_расход RIGHT JOIN ((SELECT Таблица1.name, Sum(Таблица1.summa) AS summa
FROM Таблица1
WHERE (((Таблица1.valuta)="рубль") AND ((Таблица1.tip)="приход"))
GROUP BY Таблица1.name)  AS рубль_приход RIGHT JOIN [names] ON рубль_приход.name = names.name) ON рубль_расход.name = names.name) ON евро_приход.name = names.name) ON евро_расход.name = names.name) ON доллар_расход.name = names.name) ON доллар_приход.name = names.name;


...
Рейтинг: 0 / 0
выборка по валютам
    #39894156
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abisma2008,

Еще какое нибудь поле дополнительное ,типа уникального Ид записи есть в данной таблице, чтобы можно было идентифицировать уникальную строку таблицы? Твое решение статично привязано к к валюте и приходам/расходам. А если у Пети вообще прихода не будет, только одни расходы? Или наоборот, Паша хэдлайнер стахановец , не спит ,не ест, расходов для компании не несет, воду из офисного кулера не пьёт- приносит с собой из дома.)
Должен быть универсальный айдишник какой нить дополнительный еще)
...
Рейтинг: 0 / 0
выборка по валютам
    #39894159
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще один момент не учел в запросе, приход валюты может быть в уе, а расходы в рублях. Стопудов есть какие то дополнительные таблицы вспомогательные, откуда заливается информация по приходам/расходам ДС (либо приемка/отгрузка в случае работы склада и товаров, задачи похожи по сути).
1С?
Или вы так в экселе/аксессе заполняете данные?) Больше информации дадите, ответ будет более правильный.
...
Рейтинг: 0 / 0
выборка по валютам
    #39894160
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abisma2008, Вариант с перекрестным запросом
Код: vbnet
1.
2.
3.
4.
5.
TRANSFORM Sum([summa]*IIf([tip]="приход",1,-1)) AS Итого
SELECT Таблица1.name
FROM Таблица1
GROUP BY Таблица1.name
PIVOT Таблица1.valuta;
...
Рейтинг: 0 / 0
выборка по валютам
    #39894161
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман,
а без аксесовских функций типа IIF, в аксессе такую штуку реально забабахать? Просто интересует подход, для общего развития.
...
Рейтинг: 0 / 0
выборка по валютам
    #39894168
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
а без аксесовских функций типа IIF, в аксессе такую штуку реально забабахать?


Просто поле "Движение", а в нём или 1 или -1
...
Рейтинг: 0 / 0
выборка по валютам
    #39894171
Шаман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,
Ну, если только через три промежуточных запроса Запрос0
Код: vbnet
1.
2.
3.
SELECT Таблица1.name, Таблица1.valuta
FROM Таблица1
GROUP BY Таблица1.name, Таблица1.valuta;


Приход и Расход с одноименными фильтрами для поля tip.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
SELECT Таблица1.*
FROM Таблица1
WHERE (((Таблица1.tip)="приход"));

SELECT Таблица1.*
FROM Таблица1
WHERE (((Таблица1.tip)="расход"));


А потом уже в перекрестном запросе делать связку по полям name, valuta и производить вычисление.
Код: vbnet
1.
2.
3.
4.
5.
TRANSFORM Sum([приход.summa]-[расход.summa]) AS Итого
SELECT Запрос0.name
FROM (Запрос0 LEFT JOIN расход ON (Запрос0.valuta = расход.valuta) AND (Запрос0.name = расход.name)) LEFT JOIN приход ON (Запрос0.valuta = приход.valuta) AND (Запрос0.name = приход.name)
GROUP BY Запрос0.name
PIVOT Запрос0.valuta;

Но, как Вы правильно заметили, желательно создать дополнительное поле ID. Т.к. привязка по имени это не лучший вариант.
...
Рейтинг: 0 / 0
выборка по валютам
    #39894174
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мужики, спасибо за варианты!, сейчас в своей профильной базе поменяю свое творчество пятилетней давности.
...
Рейтинг: 0 / 0
выборка по валютам
    #39894224
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаман
Abisma2008, Вариант с перекрестным запросом
Код: vbnet
1.
2.
TRANSFORM Sum([summa]*IIf([tip]="приход",1,-1)) AS Итого
.........

Сергей Лалов
а без аксесовских функций типа IIF, в аксессе такую штуку реально забабахать?
Просто интересует подход, для общего развития.

Вот так, например - то же самое, но без IIf:
Код: vbnet
1.
TRANSFORM Sum([summa]*(([tip]="расход")-([tip]="приход"))) AS Итого
...
Рейтинг: 0 / 0
выборка по валютам
    #39894259
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огромное спасибо за участия!
Я немножко изменил запрос:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT Таблица1.name,  
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="рубль",1,-1)) AS рубль, 
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="доллар",1,-1)) AS доллар, 
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="евро",1,-1)) AS евро
FROM Таблица1
GROUP BY Таблица1.name


Это для таго что бы можно этот запрос использовать в MySQL.
Проверил запрос вроде работает).
...
Рейтинг: 0 / 0
выборка по валютам
    #39894261
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пример:
...
Рейтинг: 0 / 0
выборка по валютам
    #39894296
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов
Abisma2008,

Еще какое нибудь поле дополнительное ,типа уникального Ид записи есть в данной таблице, чтобы можно было идентифицировать уникальную строку таблицы? Твое решение статично привязано к к валюте и приходам/расходам. А если у Пети вообще прихода не будет, только одни расходы? Или наоборот, Паша хэдлайнер стахановец , не спит ,не ест, расходов для компании не несет, воду из офисного кулера не пьёт- приносит с собой из дома.)
Должен быть универсальный айдишник какой нить дополнительный еще)

Можно использовать "IsNull"!
...
Рейтинг: 0 / 0
выборка по валютам
    #39894297
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов
Еще один момент не учел в запросе, приход валюты может быть в уе, а расходы в рублях. Стопудов есть какие то дополнительные таблицы вспомогательные, откуда заливается информация по приходам/расходам ДС (либо приемка/отгрузка в случае работы склада и товаров, задачи похожи по сути).
1С?
Или вы так в экселе/аксессе заполняете данные?) Больше информации дадите, ответ будет более правильный.

Данные добавляются через формы.
А "приход-расход" можно сделать "Поле со списком"...
...
Рейтинг: 0 / 0
выборка по валютам
    #39894298
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abisma2008
...Я немножко изменил запрос:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT Таблица1.name,  
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="рубль",1,-1)) AS рубль, 
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="доллар",1,-1)) AS доллар, 
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="евро",1,-1)) AS евро
FROM Таблица1
GROUP BY Таблица1.name


Это для таго что бы можно этот запрос использовать в MySQL.
Проверил запрос вроде работает).

Работать-то работает... Но результаты выдает неверные.

Вот это все неправильно: IIf([valuta]="рубль",1,-1), IIf([valuta]="доллар",1,-1), IIf([valuta]="евро",1,-1).

Нужно так: -([valuta]="рубль"), -([valuta]="доллар"), -([valuta]="евро")
...
Рейтинг: 0 / 0
выборка по валютам
    #39894302
Abisma2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle
Abisma2008
...Я немножко изменил запрос:
Код: sql
1.
2.
3.
4.
5.
6.
SELECT Таблица1.name,  
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="рубль",1,-1)) AS рубль, 
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="доллар",1,-1)) AS доллар, 
Sum([summa]*IIf([tip]="приход",-1,1)*IIf([valuta]="евро",1,-1)) AS евро
FROM Таблица1
GROUP BY Таблица1.name


Это для таго что бы можно этот запрос использовать в MySQL.
Проверил запрос вроде работает).

Работать-то работает... Но результаты выдает неверные.

Вот это все неправильно: IIf([valuta]="рубль",1,-1), IIf([valuta]="доллар",1,-1), IIf([valuta]="евро",1,-1).

Нужно так: -([valuta]="рубль"), -([valuta]="доллар"), -([valuta]="евро")

Да, как всегда вы правы!
Я поторопился. извиняюсь!
...
Рейтинг: 0 / 0
выборка по валютам
    #39894548
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / выборка по валютам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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