![]() |
|
Итог по документу в запросе - задваиваются показатели верхней группировки | ☑ | ||
---|---|---|---|---|
0
Vladal
05.01.16
✎
13:29
|
Есть запрос по составу табчастей документов, данные берутся напрямую из SQL семерочной базы.
Есть показатели "Количество строк в документе", показывающий количество строк ТЧ, и "Количество строк", показывающий количество строк ТЧ документа, попавших в выборку по условиям. Мне необходимо подсчитать сумму строк документов. Если просто применить функцию СУММА(показатель), с итогами по группировке Документ, то сумируются все строки в группировке, а мне надо просуммировать уникальные значения в группировке Документ. Т.е. по документу из примера Расходная № 90220 сейчас дважды считается сумма строк, а надо считать один раз. Простейший запрос: |ВЫБРАТЬ | ТЗ.док_Претензия_Представление КАК Документ, | ТЗ.спр_Товар_Представление КАК Товар, | ТЗ.МаксимальноеКвоСтрок КАК КолвоСТрокВТЧ, | 1 КАК КолвоСтрокВВыборке |ПОМЕСТИТЬ ВремВыборка |ИЗ | &ТЗ_Выборка КАК ТЗ |; |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВремВыборка.Документ КАК Документ, | ВремВыборка.Товар, | СРЕДНЕЕ(ВремВыборка.КолвоСТрокВТЧ) КАК КолвоСТрокВТЧ, | СУММА(ВремВыборка.КолвоСтрокВВыборке) КАК КолвоСтрокВВыборке |ИЗ | ВремВыборка КАК ВремВыборка |СГРУППИРОВАТЬ ПО | ВремВыборка.Документ, | ВремВыборка.Товар |ИТОГИ | СРЕДНЕЕ(КолвоСТрокВТЧ), | СУММА(КолвоСтрокВВыборке) |ПО | ОБЩИЕ, | Документ Если взять Среднее - то на первой группировке по документу вроде все правильно. А в итогах бред. Если взять СУММА, то тоже суммирует все строки. Вот пример выборки: ------------------------------------------------------------------------------------------------------ | Документ | Товаp |Колво строк в ТЧ |Колво строк в выборке| ------------------------------------------------------------------------------------------------------ | | |8 (сумма 2+2+3+1) |4 (сумма) | | Расходная № 90220 от 19.11.2015 | Датчик abs перед левый |2 |1 | | Расходная № 90220 от 19.11.2015 | Датчик abs перед правый |2 |1 | | Расходная № 90132 от 19.11.2015 | Бегунок ГАЗ 53, ЗИЛ 130 |3 |1 | | Расходная № 90668 от 20.11.2015 | Рем. вставка ГАЗ 2705 |1 |1 | ------------------------------------------------------------------------------------------------------ | | а надо так: | ---------------------------------------------------------------------------------------------------- | Документ | Товаp |Колво строк в ТЧ|Колво строк в выборке| ---------------------------------------------------------------------------------------------------- | | |2+3+1 = 6 строк |4 - тут правильно | | Расходная № 90220 от 19.11.2015 | Датчик abs перед левый |2 |1 | | Расходная № 90220 от 19.11.2015 | Датчик abs перед правый |2 |1 | | Расходная № 90132 от 19.11.2015 | Бегунок ГАЗ 53, ЗИЛ 130 |3 |1 | | Расходная № 90668 от 20.11.2015 | Рем. вставка ГАЗ 2705 |1 |1 | ---------------------------------------------------------------------------------------------------- Как это провернуть? |
|||
1
Nuobu
05.01.16
✎
13:32
|
(0) Сгруппировать, в группировку включить Колво строк в ТЧ.
А вот Итоги оставить как есть. |
|||
2
Nuobu
05.01.16
✎
13:32
|
(1) То бишь по сумме итоги.
|
|||
3
Vladal
05.01.16
✎
13:34
|
(2) Вот так?
ВЫБРАТЬ ВремВыборка.Документ КАК Документ, ВремВыборка.Товар КАК Товар, ВремВыборка.КолвоСТрокВТЧ КАК КолвоСТрокВТЧ, СУММА(ВремВыборка.КолвоСтрокВВыборке) КАК КолвоСтрокВВыборке ИЗ ВремВыборка КАК ВремВыборка СГРУППИРОВАТЬ ПО ВремВыборка.Документ, ВремВыборка.Товар, ВремВыборка.КолвоСТрокВТЧ ИТОГИ СУММА(КолвоСТрокВТЧ), СУММА(КолвоСтрокВВыборке) ПО ОБЩИЕ, Документ, Товар тоже не хочет |
|||
4
Vladal
05.01.16
✎
13:35
|
СУММА(КолвоСТрокВТЧ) суммирует всё вкруговую,
а если сделать СРЕДНЕЕ, то ерунда в общих итогах, а надо на контрольном примере получить 6 строк (три документа) |
|||
5
Vladal
05.01.16
✎
13:39
|
Выделять в подзапрос или временную таблицу без товаров и там считать итоги потом соединять? Ну так это тогда вручную в таблице значений тогда пересчитывать.
|
|||
6
Nuobu
05.01.16
✎
13:58
|
Так должно взлететь
ВЫБРАТЬ ВремВыборка.Документ КАК Документ, ВремВыборка.Товар КАК Товар, ВремВыборка.КолвоСТрокВТЧ КАК КолвоСТрокВТЧ, СУММА(ВремВыборка.КолвоСтрокВВыборке) КАК КолвоСтрокВВыборке Поместить ВТ ИЗ ВремВыборка КАК ВремВыборка СГРУППИРОВАТЬ ПО ВремВыборка.Документ, ВремВыборка.Товар, ВремВыборка.КолвоСТрокВТЧ ; Выбрать * из ВТ как ВТ ИТОГИ СУММА(КолвоСТрокВТЧ), СУММА(КолвоСтрокВВыборке) ПО ОБЩИЕ, Документ, Товар |
|||
7
Vladal
05.01.16
✎
17:31
|
(6) Вроде работает. Спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |