Имя: Пароль:
1C
1С v8
Помогите составить запрос ☑
0 DirecTwiX
 
07.07.12
✎
14:01
Есть таблица

10
20
-30
-10
40

По ней итог 30. Нужно выбрать отсюда поля того же знака, что и итог. В данном случае это 10 20 40. Через два запроса это сделать легко. Хотелось бы через 1.
Была идея посчитать итог, а потом наложить условие "Где Поле*Итог>0", но с большими числами такое не прокатит...
1 andrewks
 
07.07.12
✎
14:06
having
2 DirecTwiX
 
07.07.12
✎
14:08
И каким же образом???
3 Rie
 
07.07.12
✎
14:11
(2) Считаешь итог в подзапросе. Потом - соединяешь и наслаждаешься результатом.

(1) Не взлетит.
4 DirecTwiX
 
07.07.12
✎
14:25
И по какому условию соединяешь???
5 DirecTwiX
 
07.07.12
✎
14:29
Придумал. Умножать поле не на Итог, а на знак итога)
6 Rie
 
07.07.12
✎
14:32
(4) Например
ВЫБРАТЬ
   Исходная.Предмет,
   Исходная.Числовое
ИЗ
   Исходная
   ВНУТРЕННЕЕ СОЕДИНЕНИЕ
       (ВЫБРАТЬ
           Исх.Предмет,
           АГРЕГАТ(Исх.Числовое) КАК Итог
       ИЗ
           Исходная КАК Исх
       СГРУППИРОВАТЬ ПО
           Исх.Предмет
       ) КАК Итоговая
       ПО Исходная.Предмет = Итоговая.Предмет
ГДЕ
   Исходная.Числовое*Итоговая.Итог >0
7 DirecTwiX
 
07.07.12
✎
15:21
(6) Я же сказал, что не хочу умножать, т.к. при больших числах может отработать неправильно =\
Сделал так:

ВЫБРАТЬ
   УправленческийОбороты.КорСчет,
   УправленческийОбороты.СуммаОборот КАК СуммаОборот
ПОМЕСТИТЬ Выборка
ИЗ
   РегистрБухгалтерии.Управленческий.Обороты(&Начало, , , Счет = &Счет, , ) КАК УправленческийОбороты
ГДЕ
   УправленческийОбороты.КорСчет.Родитель = &Расходы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(Выборка.СуммаОборот) КАК Сумма
ПОМЕСТИТЬ Итог
ИЗ
   Выборка КАК Выборка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Выборка.КорСчет,
   Выборка.СуммаОборот
ИЗ
   Выборка КАК Выборка,
   Итог КАК Итог
ГДЕ
   Выборка.СуммаОборот*(ВЫБОР КОГДА Итог.Сумма > 0 ТОГДА 1 ИНАЧЕ -1 КОНЕЦ) > 0