Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / помогите разобраться с запросом / 7 сообщений из 7, страница 1 из 1
30.07.2010, 16:08
    #36768864
pvorobev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом
есть вот такой запрос:
ВЫБРАТЬ
РеализацияТоваровУслуг.Контрагент,
РеализацияТоваровУслуг.АдресДоставки,
РеализацияТоваровУслуг.Ссылка КАК Номер,
РеализацияТоваровУслуг.СуммаДокумента,
РеализацияТоваровУслуг.Подразделение,
РеализацияТоваровУслуг.Дата,
ЕСТЬNULL(ПриходныйКассовыйОрдер.СуммаДокумента, 0)+ ЕСТЬNULL(ПлатежноеПоручениеВходящее.СуммаДокумента, 0) КАК СуммаДокумента1,
ВЫБОР
КОГДА ЕСТЬNULL(ПриходныйКассовыйОрдер.СуммаДокумента, 0) > 0
И ЕСТЬNULL(ПлатежноеПоручениеВходящее.СуммаДокумента, 0) > 0
ТОГДА "Нал и без нал"
ИНАЧЕ ВЫБОР
КОГДА ЕСТЬNULL(ПриходныйКассовыйОрдер.СуммаДокумента, 0) > 0
ТОГДА "Нал"
ИНАЧЕ ВЫБОР
КОГДА ЕСТЬNULL(ПлатежноеПоручениеВходящее.СуммаДокумента, 0) > 0
ТОГДА "Без нал"
КОНЕЦ
КОНЕЦ
КОНЕЦ КАК Вид,
ВЫРАЗИТЬ(РеализацияТоваровУслуг.СуммаДокумента - (ЕСТЬNULL(ПриходныйКассовыйОрдер.СуммаДокумента, 0) + ЕСТЬNULL(ПлатежноеПоручениеВходящее.СуммаДокумента, 0)) КАК ЧИСЛО(15, 2)) КАК ДолгТест
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
ПО РеализацияТоваровУслуг.Ссылка = ПриходныйКассовыйОрдер.ДокументОснование
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
ПО РеализацияТоваровУслуг.Ссылка = ПлатежноеПоручениеВходящее.ДокументОснование
ГДЕ
РеализацияТоваровУслуг.Дата <= &период
И (ВЫРАЗИТЬ(РеализацияТоваровУслуг.СуммаДокумента - (ЕСТЬNULL(ПриходныйКассовыйОрдер.СуммаДокумента, 0) + ЕСТЬNULL(ПлатежноеПоручениеВходящее.СуммаДокумента, 0)) КАК ЧИСЛО(15, 2))) <> 0

после выполнения выводиться отчет, не могу понять такую штуку, если по документу реализация было два приходника, то в отчет выводится две строки с одним и со вторым приходником, а должно по сумме двух строк вообще убираться, как это исправить
...
Рейтинг: 0 / 0
30.07.2010, 16:24
    #36768897
Господин ПЖ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом
>если по документу реализация было два приходника, то в отчет выводится две строки с одним и со вторым приходником

логично. У тебя 2 таблицы между первой и второй левое соединение:

табл. 1

id
1
2
3

табл. 2

id FK (id табл. 1)
11 1
12 1
13 2

в выборке:

1 11
1 12
2 13
3 NULL



Сгруппировать строки

суммы приходников завернуть в агрегатную функцию Сумма(), сумму реализации в Максимум (чтобы его не двоило)
...
Рейтинг: 0 / 0
30.07.2010, 16:31
    #36768909
pvorobev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом
Господин ПЖ>если по документу реализация было два приходника, то в отчет выводится две строки с одним и со вторым приходником

логично. У тебя 2 таблицы между первой и второй левое соединение:

табл. 1

id
1
2
3

табл. 2

id FK (id табл. 1)
11 1
12 1
13 2

в выборке:

1 11
1 12
2 13
3 NULL



Сгруппировать строки

суммы приходников завернуть в агрегатную функцию Сумма(), сумму реализации в Максимум (чтобы его не двоило)
спасибо конечно за отзывчивость а нельзя ли поконкретнее, а то мне не допереть до этого, заранее спасибо
...
Рейтинг: 0 / 0
31.07.2010, 14:29
    #36769479
pvorobev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом
помогите плиз как это исправить в запросе
...
Рейтинг: 0 / 0
31.07.2010, 20:34
    #36769665
DOSS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом
Если трудно запросить одним запросом, то разделите на несколько простых запросов.
...
Рейтинг: 0 / 0
02.08.2010, 07:55
    #36770442
pvorobev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом
DOSSЕсли трудно запросить одним запросом, то разделите на несколько простых запросов.
Совсем запутался, помогите пожалуйста, кто чем можете(
...
Рейтинг: 0 / 0
03.08.2010, 19:56
    #36773843
WildSery
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться с запросом
DOSSЕсли трудно запросить одним запросом, то разделите на несколько простых запросов.Одним запросом это никак не получится. Потому что два левых соединения по-любому будут множить суммы.

Простейший вариант - вложенный запрос.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
ВЫБРАТЬ
  РеализацияСПриходниками.РТУ КАК Номер,
  РеализацияСПриходниками.Контрагент,
  РеализацияСПриходниками.АдресДоставки,
  РеализацияСПриходниками.СуммаДокумента,
  РеализацияСПриходниками.Подразделение,
  РеализацияСПриходниками.Дата,
  ЕСТЬNULL(СУММА(ПлатежноеПоручениеВходящее.СуммаДокумента),  0 ) + СуммаПКО КАК СуммаДокумента1,
  ВЫРАЗИТЬ(РеализацияСПриходниками.СуммаДокумента - ЕСТЬNULL(СУММА(ПлатежноеПоручениеВходящее.СуммаДокумента),  0 ) + СуммаПКО КАК ЧИСЛО( 15 ,  2 )) КАК ДолгТест
ИЗ
  (
  ВЫБРАТЬ
    РеализацияТоваровУслуг.Ссылка КАК РТУ,
    РеализацияТоваровУслуг.Контрагент,
    РеализацияТоваровУслуг.АдресДоставки,
    РеализацияТоваровУслуг.СуммаДокумента,
    РеализацияТоваровУслуг.Подразделение,
    РеализацияТоваровУслуг.Дата,
    ЕСТЬNULL(СУММА(ПриходныйКассовыйОрдер.СуммаДокумента),  0 ) КАК СуммаПКО
  ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
      ПО РеализацияТоваровУслуг.Ссылка = ПриходныйКассовыйОрдер.ДокументОснование
  ГДЕ
    РеализацияТоваровУслуг.Дата <= &период
  СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслуг.Ссылка,
    РеализацияТоваровУслуг.Контрагент,
    РеализацияТоваровУслуг.АдресДоставки,
    РеализацияТоваровУслуг.СуммаДокумента,
    РеализацияТоваровУслуг.Подразделение,
    РеализацияТоваровУслуг.Дата
  ) КАК РеализацияСПриходниками
  ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
    ПО РеализацияСПриходниками.РТУ = ПлатежноеПоручениеВходящее.ДокументОснование

СГРУППИРОВАТЬ ПО
  РеализацияСПриходниками.РТУ,
  РеализацияСПриходниками.Контрагент,
  РеализацияСПриходниками.АдресДоставки,
  РеализацияСПриходниками.СуммаДокумента,
  РеализацияСПриходниками.Подразделение,
  РеализацияСПриходниками.Дата,
  РеализацияСПриходниками.СуммаПКО
ИМЕЮЩИЕ
  ВЫРАЗИТЬ(РеализацияСПриходниками.СуммаДокумента - ЕСТЬNULL(СУММА(ПлатежноеПоручениеВходящее.СуммаДокумента),  0 ) + СуммаПКО КАК ЧИСЛО( 15 ,  2 )) <>  0 
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / помогите разобраться с запросом / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]