![]() |
|
Задвоенное значение в пакетном запросе | ☑ | ||
---|---|---|---|---|
0
NIGHTHUNTER
27.11.20
✎
07:50
|
Подскажите пожалуйста, из за чего может быть задвоение значения в запросе?
В выборке два значения. Два документа. Во втором документе, задвоенное значение СуммаДокумента . ВЫБРАТЬ НарядРасходы.Ссылка.ГлавныйДокумент КАК ГлавныйДокумент, СУММА(НарядРасходы.СуммаФакт) КАК СуммаФакт, 0 КАК СуммаФактЗарплата ПОМЕСТИТЬ ВТ_СуммаПоНарядам ИЗ Документ.Наряд.Расходы КАК НарядРасходы ГДЕ НарядРасходы.Ссылка.Состояние = &Состояние СГРУППИРОВАТЬ ПО НарядРасходы.Ссылка.ГлавныйДокумент ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ НарядРасходы.Ссылка.ГлавныйДокумент, 0, СУММА(НарядРасходы.СуммаФакт) ИЗ Документ.Наряд.Расходы КАК НарядРасходы ГДЕ НарядРасходы.СтатьяБюджета = &СтатьяБюджета И НарядРасходы.Ссылка.Состояние = &Состояние СГРУППИРОВАТЬ ПО НарядРасходы.Ссылка.ГлавныйДокумент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СвойстваДокументов.Документ КАК Документ, СвойстваДокументов.Документ.Клиент КАК ДокументКлиент, СвойстваДокументов.Документ.Услуга КАК ДокументУслуга, СвойстваДокументов.Документ.Клиент.Контрагент КАК ДокументКлиентКонтрагент, ПараметыУровняСервиса.ФактическаяДатаЗакрытия КАК ФактическаяДатаЗакрытия, СвойстваДокументов.Документ.Ответственный КАК Ответственный, ВТ_СуммаПоНарядам.ГлавныйДокумент КАК ГлавныйДокумент, СвойстваДокументов.Документ.Состояние КАК Состояние, СУММА(ВЫРАЗИТЬ(СвойстваДокументов.Значение КАК ЧИСЛО(15, 2))) КАК СуммаОбращения, СУММА(ЕСТЬNULL(ВТ_СуммаПоНарядам.СуммаФакт, 0)) КАК СуммаФактПоНарядам, СУММА(ЕСТЬNULL(ВТ_СуммаПоНарядам.СуммаФактЗарплата, 0)) КАК СуммаФактПоНарядамЗарплата //ПОМЕСТИТЬ ВТ_Обращения_СуммаНарядовДляПересчета ИЗ РегистрСведений.СвойстваДокументов КАК СвойстваДокументов ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметыУровняСервиса КАК ПараметыУровняСервиса ПО СвойстваДокументов.Документ = ПараметыУровняСервиса.Инцидент ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СуммаПоНарядам КАК ВТ_СуммаПоНарядам ПО СвойстваДокументов.Документ = ВТ_СуммаПоНарядам.ГлавныйДокумент ГДЕ СвойстваДокументов.Документ ССЫЛКА Документ.Инцидент И НЕ СвойстваДокументов.Документ.Клиент.Контрагент ЕСТЬ NULL И СвойстваДокументов.Свойство = &Свойство И ПараметыУровняСервиса.ФактическаяДатаЗакрытия МЕЖДУ &НачДата И &КонДата СГРУППИРОВАТЬ ПО СвойстваДокументов.Документ, СвойстваДокументов.Документ.Клиент, СвойстваДокументов.Документ.Услуга, СвойстваДокументов.Документ.Клиент.Контрагент, ПараметыУровняСервиса.ФактическаяДатаЗакрытия, СвойстваДокументов.Документ.Ответственный, ВТ_СуммаПоНарядам.ГлавныйДокумент, СвойстваДокументов.Документ.Состояние |
|||
1
NIGHTHUNTER
27.11.20
✎
07:52
|
(0+) Задвоенное значение СуммаОбращения , то есть .
|
|||
2
Галахад
гуру
27.11.20
✎
08:00
|
Ну, сгруппируй таблицу из первого запроса.
|
|||
3
NIGHTHUNTER
27.11.20
✎
08:09
|
(2) То есть, нужно, предварительно сделать ещё один пакетный запрос, где выбрать сгруппировав, таблицу из первого запроса ?
Что бы передать ее на обработку дальше? |
|||
4
NIGHTHUNTER
27.11.20
✎
08:18
|
(2) вот это значение задваивает, в одном документе, почему то ((
СУММА(ВЫРАЗИТЬ(СвойстваДокументов.Значение КАК ЧИСЛО(15, 2))) КАК СуммаОбращения, |
|||
5
NIGHTHUNTER
27.11.20
✎
08:18
|
(2) Правильно ли я все сделал?
ВЫБРАТЬ НарядРасходы.Ссылка.ГлавныйДокумент КАК ГлавныйДокумент, СУММА(НарядРасходы.СуммаФакт) КАК СуммаФакт, 0 КАК СуммаФактЗарплата ПОМЕСТИТЬ ВТ_СуммаПоНарядам ИЗ Документ.Наряд.Расходы КАК НарядРасходы ГДЕ НарядРасходы.Ссылка.Состояние = &Состояние СГРУППИРОВАТЬ ПО НарядРасходы.Ссылка.ГлавныйДокумент ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ НарядРасходы.Ссылка.ГлавныйДокумент, 0, СУММА(НарядРасходы.СуммаФакт) ИЗ Документ.Наряд.Расходы КАК НарядРасходы ГДЕ НарядРасходы.СтатьяБюджета = &СтатьяБюджета И НарядРасходы.Ссылка.Состояние = &Состояние СГРУППИРОВАТЬ ПО НарядРасходы.Ссылка.ГлавныйДокумент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_СуммаПоНарядам.ГлавныйДокумент КАК ГлавныйДокумент, СУММА(ВТ_СуммаПоНарядам.СуммаФакт) КАК СуммаФакт, СУММА(ВТ_СуммаПоНарядам.СуммаФактЗарплата) КАК СуммаФактЗарплата ПОМЕСТИТЬ ВТ_СуммыПоНарядамСГруппировкой ИЗ ВТ_СуммаПоНарядам КАК ВТ_СуммаПоНарядам СГРУППИРОВАТЬ ПО ВТ_СуммаПоНарядам.ГлавныйДокумент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СвойстваДокументов.Документ КАК Документ, СвойстваДокументов.Документ.Клиент КАК ДокументКлиент, СвойстваДокументов.Документ.Услуга КАК ДокументУслуга, СвойстваДокументов.Документ.Клиент.Контрагент КАК ДокументКлиентКонтрагент, ПараметыУровняСервиса.ФактическаяДатаЗакрытия КАК ФактическаяДатаЗакрытия, СвойстваДокументов.Документ.Ответственный КАК Ответственный, СвойстваДокументов.Документ.Состояние КАК Состояние, СУММА(ВЫРАЗИТЬ(СвойстваДокументов.Значение КАК ЧИСЛО(15, 2))) КАК СуммаОбращения, СУММА(ЕСТЬNULL(ВТ_СуммыПоНарядамСГруппировкой.СуммаФакт, 0)) КАК СуммаФактПоНарядамСГруппировкой, СУММА(ЕСТЬNULL(ВТ_СуммыПоНарядамСГруппировкой.СуммаФактЗарплата, 0)) КАК СуммаФактПоНарядамЗарплатаСГруппировкой ИЗ РегистрСведений.СвойстваДокументов КАК СвойстваДокументов ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПараметыУровняСервиса КАК ПараметыУровняСервиса ПО СвойстваДокументов.Документ = ПараметыУровняСервиса.Инцидент ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СуммыПоНарядамСГруппировкой КАК ВТ_СуммыПоНарядамСГруппировкой ПО СвойстваДокументов.Документ = ВТ_СуммыПоНарядамСГруппировкой.ГлавныйДокумент ГДЕ СвойстваДокументов.Документ ССЫЛКА Документ.Инцидент И НЕ СвойстваДокументов.Документ.Клиент.Контрагент ЕСТЬ NULL И СвойстваДокументов.Свойство = &Свойство И ПараметыУровняСервиса.ФактическаяДатаЗакрытия МЕЖДУ &НачДата И &КонДата СГРУППИРОВАТЬ ПО СвойстваДокументов.Документ, СвойстваДокументов.Документ.Клиент, СвойстваДокументов.Документ.Услуга, СвойстваДокументов.Документ.Клиент.Контрагент, ПараметыУровняСервиса.ФактическаяДатаЗакрытия, СвойстваДокументов.Документ.Ответственный, СвойстваДокументов.Документ.Состояние, ВТ_СуммыПоНарядамСГруппировкой.ГлавныйДокумент |
|||
6
Галахад
гуру
27.11.20
✎
08:23
|
(5) Наверное. Суммы-то норм?
|
|||
7
NIGHTHUNTER
27.11.20
✎
09:01
|
(6) на тестовом этом примере, вроде как да, буду сейчас продвигаться в решении .
|
|||
8
Kassern
27.11.20
✎
09:11
|
(7) А что мешает запустить консоль запросов и выполнить запрос по пакетно. Сразу будет видно в каком пакете задваиваются данные.
|
|||
9
Terl
27.11.20
✎
09:55
|
(0) Задвоение может быть в любой из таблиц, что приводит к задвоению в итоговом результате. Необходимо сделать отдельные запросы к каждой таблице, и добиться везде отсутствия проблем. Это самый быстры путь решения задачи
|
|||
10
Ёпрст
гуру
27.11.20
✎
10:01
|
(5) нет.
|
|||
11
Ёпрст
гуру
27.11.20
✎
10:03
|
Нужно обернуть твой юнион в подзапрос и его уже сгруппировать, а не групптровать отдельно запросы в юнионе
|
|||
12
Галахад
гуру
27.11.20
✎
10:07
|
(11) Так сделал же.
|
|||
13
Ёпрст
гуру
27.11.20
✎
10:13
|
(12) где?
|
|||
14
Галахад
гуру
27.11.20
✎
10:14
|
(13) Второй пакет.
|
|||
15
Ёпрст
гуру
27.11.20
✎
10:21
|
(14) да уж..ты не отличаешь этот запрос
Селект вася фром (селект юнион селект юнион) гроуп бай вася От такого??? Селект вася фром гроупбай Юнион Селект федя фром гроупбай |
|||
16
Галахад
гуру
27.11.20
✎
10:25
|
(15) Да вот же:
ВЫБРАТЬ ВТ_СуммаПоНарядам.ГлавныйДокумент КАК ГлавныйДокумент, СУММА(ВТ_СуммаПоНарядам.СуммаФакт) КАК СуммаФакт, СУММА(ВТ_СуммаПоНарядам.СуммаФактЗарплата) КАК СуммаФактЗарплата ПОМЕСТИТЬ ВТ_СуммыПоНарядамСГруппировкой ИЗ ВТ_СуммаПоНарядам КАК ВТ_СуммаПоНарядам СГРУППИРОВАТЬ ПО ВТ_СуммаПоНарядам.ГлавныйДокумент |
|||
17
Ёпрст
гуру
27.11.20
✎
10:28
|
(16) чего куришь то???
Сгруппированные подзапросы в юнионе не равны, сгруппированному запросу снаружи юниона |
|||
18
Галахад
гуру
27.11.20
✎
10:30
|
(17) И что? (0) Видимо очень старательный и сгруппировал два раза.
|
|||
19
Галахад
гуру
27.11.20
✎
10:30
|
(18) + И внутри и снаружи.
|
|||
20
Ёпрст
гуру
27.11.20
✎
10:52
|
(18) ну ты тугой..
первый сгруппированный запрос вернул тебе Вася булка 10 водка 0 второй сгруппированный запрос вернул тебе Вася булка 0 водка 10 потом ты делаешь юнион между ними будет у тебя 2 записи Вася булка 10 водка 0 Вася булка 0 водка 10 а актору надо одну Вася булка 10 водка 10 так понятнее, нет ? |
|||
21
Ёпрст
гуру
27.11.20
✎
11:07
|
(0)
на вот, занимайся
|
|||
22
Галахад
гуру
27.11.20
✎
11:07
|
(20) Ну ок.
"будет у тебя 2 записи Вася булка 10 водка 0 Вася булка 0 водка 10 а актору надо одну" Так вот он их сгруппировал. См. ВТ_СуммыПоНарядамСГруппировкой. И получил одну. "Вася булка 10 водка 10" |
|||
23
NIGHTHUNTER
27.11.20
✎
11:24
|
(21) То есть, что в (5) выдавать будет не правильный результат ?
В (21) Верное решение? Я никогда так не делал, когда ИЗ выбирали из другого запроса. Видел конечно, но не понимал истинное предназначение этого . |
|||
24
Ёпрст
гуру
27.11.20
✎
11:38
|
(22) ёпт..еще одну вт не заметил))
(23) либо так, либо в (5) выкинь группировку там гдде юнион, раз потом груупируешь во второй временной табличке |
|||
25
NIGHTHUNTER
27.11.20
✎
11:43
|
(24) Ну вот получается все в (5) же верно?
Ну да возможно лишняя группировка, но на результат то она не влияет же???!!!!! Просто лишняя. А так, (5) нормально же работает? А то у меня тут, ничего не пойму с данными, из зачего что не так выводится ( |
|||
26
Галахад
гуру
27.11.20
✎
11:48
|
(24) Епрст! :)
(25) Ну тебе как-то самому желательно понимать верен твой запрос или нет... |
|||
27
NIGHTHUNTER
27.11.20
✎
12:51
|
(26) Это правильно! Но все же я узнаю, правильно или нет можно же сказать.
У меня что то голова отказала ((( |
|||
28
NIGHTHUNTER
27.11.20
✎
12:53
|
(26) Если там что то лишнее в нем, не суть значимо, если это не влияет на результат.
Например в (0) шло задвоение, (5) это устранило! Да в (21) тоже интересный прием и подход. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |