|
Разность полей в запросе | ☑ | ||
---|---|---|---|---|
0
kinazarov
02.07.13
✎
17:28
|
Написал запрос, который будет использоваться для целевых списаний: на основании стандартного СписаниеТоваров будут вводится документы НазначениеЦелиСписания.
Написал такой запрос ВЫБРАТЬ ПТС.Номенклатура, ПТС.Склад, ПТС.Качество, СУММА(ПТС.Количество) КАК ДокСумКоличество, СУММА(ПТС.Стоимость) КАК ДокСумСтоимость, ЦССЗ.СумК КАК НацеленноеКоличество, ЦССЗ.СумС КАК НацеленнаяСтоимость ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПТС ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЦС.Товар КАК Тов, СУММА(ЦС.Количество) КАК СумК, СУММА(ЦС.Стоимость) КАК СумС ИЗ РегистрНакопления.ЦелевыеСписания КАК ЦС ГДЕ ЦС.ДокументСписания = &РегДок СГРУППИРОВАТЬ ПО ЦС.Товар) КАК ЦССЗ ПО ПТС.Номенклатура = ЦССЗ.Тов ГДЕ ПТС.Регистратор = &РегДок СГРУППИРОВАТЬ ПО ПТС.Номенклатура, ПТС.Склад, ПТС.Качество, ЦССЗ.СумК, ЦССЗ.СумС (ЦССЗ - это целевые списания субзапрос) Запрос нормально выводит данные. Но мне желательно получать не только количество и сумму из документа списания и документов нацеливания, а их разность. То есть нечто вроде ДокСумКоличество-НацеленноеКоличество КАК НенацеленныйОстаток, ДокСумСтоимость-НацеленнаяСтоимость КАК НенацеленныйОстаток в списке полей запроса. |
|||
1
Maxus43
02.07.13
✎
17:29
|
что мешает?
|
|||
2
Maxus43
02.07.13
✎
17:30
|
запросы поддерживают арифмитические операции, и даже конкатенацию строковых
|
|||
3
kinazarov
02.07.13
✎
17:32
|
При вылавливании NULL-значений не получается
|
|||
4
ДенисЧ
02.07.13
✎
17:33
|
(3) Открой для себя силу ЕСТЬNULL, юный падаван!
|
|||
5
kinazarov
02.07.13
✎
17:34
|
Тогда не работает разность
|
|||
6
ДенисЧ
02.07.13
✎
17:35
|
(5) Кажется, кто-то тут уже переутомился...
|
|||
7
Maxus43
02.07.13
✎
17:37
|
ЕСТЬNULL(Поле1,0) - ЕСТЬNULL(Поле2,0)
|
|||
8
kinazarov
02.07.13
✎
17:37
|
Вот, например, результат вывода
http://rghost.ru/47165342 Выделенное поле - нулевое, хотя видно, что вычитаемое больше нуля |
|||
9
Галахад
гуру
02.07.13
✎
17:43
|
(8) Не. Не видно.
|
|||
10
kinazarov
02.07.13
✎
17:43
|
Вот еще раз то же самое с полным текстом запроса и выводом его данных
http://rghost.ru/47165497 Подскажите, почему разность не считается? |
|||
11
Галахад
гуру
02.07.13
✎
17:46
|
Убери группировку и сравни.
|
|||
12
kinazarov
02.07.13
✎
17:47
|
Галахад, специально для тебя:
Вон там внизу в выводе поле ДокСумКоличество для масленки равно 4. Поле СумК равно 2. А их разность - нулю. Вот как так? |
|||
13
kinazarov
02.07.13
✎
17:48
|
без группировки агрегатное поле (суммы) невозможно сосчитать
|
|||
14
Галахад
гуру
02.07.13
✎
17:49
|
(13) Зато можно увидеть, что разность считается.
|
|||
15
kinazarov
02.07.13
✎
17:52
|
Не видно же ничего кроме ошибки, вот пруф
http://rghost.ru/47165707 |
|||
16
Ёпрст
02.07.13
✎
17:53
|
Группировка по разности и числовым колонкам - зачёт
Отсыпь, а ? |
|||
17
Ёпрст
02.07.13
✎
17:54
|
(15) Может всё же, агрегатные функции будешь применять в селект листе при группировке ?
|
|||
18
kinazarov
02.07.13
✎
17:55
|
Ёпрст подскажи как правильно сделать, а?
|
|||
19
Ёпрст
02.07.13
✎
17:59
|
(18)
Сумма(ПТС.Количество)-Сумма(ЕстьNULL(ЦССЗ.СумК,0)) КАК Вася .... |
|||
20
kinazarov
02.07.13
✎
18:20
|
Мысль ясна. Попробовал как ты говоришь.
Только тогда запрос суммы неверно считает например, когда в документе списания в товарной части есть номенклатура1 количествономенклатурымало сумманоменклатурымало номенклатура2 количествономенклатуры2 сумманоменклатуры2 номенклатура1 количествономенклатурымного сумманоменклатурымного и в документе назначениесписания есть номенклатура1 назначение1 количествономенклатуры11 сумманоменклатуры11 номенклатура1 назначение2 количествономенклатуры22 сумманоменклатуры22 номенклатура2 назначение1 количествономенклатуры21 сумманоменклатуры1 то выходит задвоение |
|||
21
kinazarov
02.07.13
✎
18:25
|
||||
22
kinazarov
02.07.13
✎
18:28
|
в итоге мне в субзапросе нужно все равно суммировать по каждой номенклатуре количество и сумму.
но и во внешнем запросе ее нужно суммировать а первоначальный код, в котором так и сделано, не дает посчитать разность |
|||
23
kinazarov
02.07.13
✎
18:33
|
Вот табличные части документов-регистраторов
http://rghost.ru/47166675 |
|||
24
kinazarov
02.07.13
✎
18:55
|
Вот так вроде работает, но все равно чувствую себя индусом
ВЫБРАТЬ ПТС.Номенклатура, СУММА(ПТС.Количество) КАК ДокКоличество, СУММА(ПТС.Стоимость) КАК ДокСтоимость, СУММА(ПТС.Количество) - ЕСТЬNULL(ЦССЗ.Колво, 0) КАК ОстатокКоличество, СУММА(ПТС.Стоимость) - ЕСТЬNULL(ЦССЗ.Стоим, 0) КАК ОстатокСтоимость ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПТС ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЦС.Товар КАК Тов, СУММА(ЦС.Количество) КАК Колво, СУММА(ЦС.Стоимость) КАК Стоим ИЗ РегистрНакопления.ЦелевыеСписания КАК ЦС ГДЕ ЦС.ДокументСписания = &РегДок СГРУППИРОВАТЬ ПО ЦС.Товар) КАК ЦССЗ ПО ПТС.Номенклатура = ЦССЗ.Тов ГДЕ ПТС.Регистратор = &РегДок СГРУППИРОВАТЬ ПО ПТС.Номенклатура, ЦССЗ.Колво, ЦССЗ.Стоим |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |