|
SUM с условием
|
|||
---|---|---|---|
#18+
Однажды в решении одной моей проблемы здесь на форуме мне посоветовали в запросе строку типа: SELECT cod_gr, Sum(C*(V=1)*(D=#04/29/2016#)) AS Увед, Sum(C*(V=2)*(D=#04/29/2016#)) AS Предп... Весь запрос большой, копировать не буду. Как я понял в скобочках перечисляются условия суммы чрез звездочку??? По образу и подобию для того чтобы разобраться в этом я создал таблицу B C 1 1 1 2 2 1 3 1 6 2 7 2 8 2 Запрос приводит к тому что в результате выдает -1, хотя должен 22. SELECT Sum(B*C=2) AS [Sum-B] FROM Таблица1; Что я не правильно делаю и где можно почитать про это информацию? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 21:57 |
|
SUM с условием
|
|||
---|---|---|---|
#18+
Прочитать надо хотя бы в хелпе про старшинство операций. Первыми выполняются арифметические (у вас умножение *), затем сравнение (=), последними логические. Скобки меняют приоритет. Таким образом вы задали условие (B*C)=2, что и привело к результату -1. А надо было выделить скобками и поменять порядок. Кроме того надо поменять знак перед SUM, поскольку True в Jet равно -1 Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:42 |
|
SUM с условием
|
|||
---|---|---|---|
#18+
DQuasar, А как умножить,предположу, что цифру С*V на TRUE ("выдаваемая"-1 в VBA и есть TRUE) Код: vbnet 1.
Читайте help A-97 для А-2007 и старше установите это ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 22:48 |
|
|
start [/forum/topic.php?fid=45&fpage=99&tid=1613381]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 137ms |
0 / 0 |