powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с группировкой суммирующий два столбца с разными условиями
15 сообщений из 15, страница 1 из 1
Запрос с группировкой суммирующий два столбца с разными условиями
    #32341196
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу подсказать как можно составить один запрос, который у меня на данный момент разделен на 2 (даже на 3, третий их потом джойнит в один)

Исходная таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
[bal]  [prizn]   [kod]    [val]  [saldoVal]  
   1       True      300       RUR      - 10 
   1       True      301       USD     -  5 
   1       True      302       RUR       15 
   2       False     303       RUR       11 
   2       False     304       USD       7 
   2       False     305       RUR       16 
   3       True      303       RUR      - 14 
   3       True      304       USD       2 
   3       True      305       RUR      - 19 


Необходимо сгруппировать по балан. позиции ([bal]), а столбец [saldoVal] просуммировать по этим сгруппиров. позициям. Но вот проблема, получить надо два просуммированных столбца:
1. в первый (saldoValNorm) отобрать счета: ([prizn]=True AND [saldoVal]<0) OR ([prizn]=False AND [saldoVal]>0)
2. а второй (saldoValRed) соотв.:([prizn]=True AND [saldoVal]>0) OR ([prizn]=False AND [saldoVal]<0)

т.е. получить в итоге так:

Код: plaintext
1.
2.
3.
4.
[bal]   [saldoValNorm]  [saldoValRed]
   1         - 15                         15 
   2           34                          0 
   3         - 33                          2 


Пока у меня эти столбцы считаются по отдельности:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT bal, Sum([saldoVal]) AS saldoValNorm 
FROM Таблица1
WHERE ([prizn]=True AND [saldoVal]< 0 ) OR ([prizn]=False AND [saldoVal]> 0 )
GROUP BY bal

и

SELECT bal, Sum([saldoVal]) AS saldoValRed 
FROM Таблица1
WHERE ([prizn]=True  AND [saldoVal]> 0 ) OR ([prizn]=False  AND [saldoVal]< 0 )
GROUP BY bal

ну и  3  запрос соединяет их потом через LEFT+RIGHT JOIN



Очень бы хотелось впихнуть все это в один запрос, но победить эту группировку я никак не могу. Насколько реально запихнуть в один запрос???

У меня пока в голове токо такие неподходящие варианты:
1. Сначала отдельный запрос с группировкой по [bal] , потом второй запрос на основе этого уже легко суммирует какие хошь поля - однако это уже 2 запроса, а не один... :(
2. написать типа: Sum(Fun1([saldoVal];[prizn])) AS saldoValNorm, Sum(Fun2([saldoVal];[prizn])) AS saldoValRed - где Fun1,2 это VB функции которые внутри себя проверяют условия на признак и отриц. числа и для не своих значений возвращают просто НУЛЬ - запрос один, это круто, но использование своих VB функции сильно подтормаживает выполнение запроса...:(
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32341201
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iif?
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32341205
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хмм, по второму варианту вместе с IIf (да, про нее я совсем забыл), ну чтож, завтра протестим, посмотрим что будет быстрее 3 старых запроса или 1 новый...
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32341322
стас1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iif - какой у него примерно синтаксис?
где смотреть на него help?
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32341323
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Аксессе нажимаешь alt+f11
И в окне ВБА, куда ты попадешь, нажав вышеуказанную комбинацию клавиш, нажимаешь F1
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32341325
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIF
Returns one of two parts, depending on the evaluation of an expression.

Syntax: IIf(expr, truepart, falsepart)

Remarks
IIf always evaluates both truepart and falsepart, even though it returns only one of them. Because of this, you should watch for undesirable side effects. For example, if evaluating falsepart results in a division by zero error, an error occurs even if expr is True.
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32341333
стас1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если теперь надо получить 7 просуммированных столбцов,
для каждого дня недели - свой?
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342255
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Экспериментируя с IIF столкнулся с таким глюком:

вот так работает:
Код: plaintext
1.
 SELECT Таблица1, IIF([saldoVal]< 1  OR [saldoVal> 3 , [saldorur], 0 ) AS Saldorur1


а вот так не хочет:
Код: plaintext
1.
 SELECT Таблица1, IIF(([saldoVal]< 1 ) OR ([saldoVal> 3 ), [saldorur], 0 ) AS Saldorur1


т.е. добавленные скобки в условие () OR () приводят к ошибке синтаксиса SQL запроса (Syntax error (missing operator) in query expression)

мне то вообще надо такое выражение забабахать:
Код: plaintext
1.
([prizn]=True  AND [saldoVal]> 0 ) OR ([prizn]=False  AND [saldoVal]< 0 )

так что пришлось забахать через двойной IIF:
Код: plaintext
1.
IIF( [activeacc]=True AND [saldoVal]< 0 , [saldoVal], IIF(  [activeacc]=False AND [saldoVal]> 0 ,[saldoVal], 0  )  )


...............интересно, в чем прикол. Это токо у меня так работает (AccXp, mdb) или у всех???

В справке, MSDN и по поиску на SQL.ru не нашел описания ограничений на ввод сложных выражений со скобками или все таки это где-то прописано...
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342311
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT Таблица1, IIF((([saldoVal]< 1 ) OR ([saldoVal> 3 )), [saldorur], 0 ) AS Saldorur1

А так?
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342354
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так пошел, шайтан просто :)
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342392
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никакого шайтана. Бубен, просто бубен
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342409
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А почему при saldoVal>3 левая квадратная скобка есть, а правой нет?
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342414
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ctrl+C & Ctrl+V - это у меня
А почему у автора - ХЗ. Очепятка?
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342432
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это очепятка, в исходниках все путем, просто выкидывал для примера все лишнее...

Кстати, Вас не напрягает конструктор запросов в режиме SQL, какие-то мелковатые буквы, курсор мигает так, что зачастую непонятно где же он точно стоит, похожие прблемы с редактированием текстом у меня были когда я работал на компьютере где системный шрифт был выбран наклонным (есть у нас на работе такие любители) и вот, мигает курсор посередине буквы и хрен поймешь что он щас сотрет через делейт....
еще подсветки разными цветами там не хватает, ..... а никуда не денешься, набирать все равно в нем приходится
...
Рейтинг: 0 / 0
Запрос с группировкой суммирующий два столбца с разными условиями
    #32342468
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, есть все-таки что-то, что подсвечивает синтаксис SQL
Пиши там, копируй в конструктор...
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с группировкой суммирующий два столбца с разными условиями
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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