Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Запрос с UNION ALL, 2 вида документов.. (число прочтений - 6305 )
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Запрос с UNION ALL, 2 вида документов..
29. Июня 2010 :: 21:45
Печать  
Здравствуйте.

Прошу подтолкнуть в нужном направлении...

1С семерка ТиС
Цель такая: получить табличку

|Номенклатура|Документ|КолПост|КолРеал

при этом в колонке "Документ" должны идти по хронологии документы ПоступлениеТМЦ и Реализация (разные типы доков, но колонка одна).

Написал 2 прямых запроса, которые работают.

Как бы теперь объединить результат в одну таблицу (которая мне нужна)


Запрос 1
       ТекстЗапроса = "
     |SELECT
     |      ПоступлениеТМЦ.IDDOC as [Документ $Документ.ПоступлениеТМЦ],
     |      $ПоступлениеТМЦ.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
     |      SUM($ПоступлениеТМЦ.Количество) as [КолПост]
     |FROM
     |      $ДокументСтроки.ПоступлениеТМЦ AS ПоступлениеТМЦ
     |INNER JOIN
     |      _1SJOURN AS Жур  ON ПоступлениеТМЦ.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ($ПоступлениеТМЦ.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |GROUP BY
     |    $ПоступлениеТМЦ.Номенклатура, ПоступлениеТМЦ.IDDOC
     |ORDER BY
     |$ПоступлениеТМЦ.Номенклатура
     |";


Запрос 2

     ТекстЗапроса = "
     |SELECT
     |      Реализация.IDDOC as [Документ $Документ.Реализация],
     |      $Реализация.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
     |      SUM($Реализация.Количество) as [КолРеал]
     |FROM
     |      $ДокументСтроки.Реализация AS Реализация
     |INNER JOIN
     |      _1SJOURN AS Жур  ON Реализация.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ($Реализация.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |GROUP BY
     |    $Реализация.Номенклатура, Реализация.IDDOC
     |ORDER BY
     |$Реализация.Номенклатура
     |";


Пытаюсь пристроить обертку

     |SELECT T.Документ as [Док $Документ]      
     |FROM(

           Запрос 1

           UNION ALL

           Запрос 2) AS T

(ORDER BY выкинул из каждого запроса конечно, тут и GROUP BY лишнее будет внутри в моем случае, но тут не суть проблемы думаю)

пишет Invalid column name 'Документ'

что-то мне подсказывает намудрил то ли с одинаковыми алиасами,
то ли объединять разные типы таким образом нельзя...
Типизацию наверху пробовал убирать.
Темы похожие читал, что-то не соображу...
Оч мало опыта с прямыми запросами, использую их как костыли местами пока, хотя костыли получаются хорошие, на них летают Улыбка а вот понимание не пришло еще....

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #1 - 30. Июня 2010 :: 04:15
Печать  
добавь в select и в group by  IDDocDef
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #2 - 30. Июня 2010 :: 05:48
Печать  
Типизации из внутренних запросов убирай. Всё вытаскивай на верх
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #3 - 30. Июня 2010 :: 06:01
Печать  
Примерно так:


Код
Выбрать все
    SELECT  Документ AS [Документ $Документ]
		     , Документ_Вид
		     , Номенклатура AS [Номенклатура $Справочник.Номенклатура]
		     , sum(КолПост) AS КолПост
		     , sum(КолРеал) AS КолРеал
From(
    |SELECT
     |	ПоступлениеТМЦ.IDDOC as Документ,
		ПоступлениеТМЦ.IDDocDef as Документ_Вид,
     |	$ПоступлениеТМЦ.Номенклатура as Номенклатура,
     |	SUM($ПоступлениеТМЦ.Количество) as КолПост
		, 0 AS КолРеал
     |FROM
     |	$ДокументСтроки.ПоступлениеТМЦ AS ПоступлениеТМЦ
     |INNER JOIN
     |	_1SJOURN AS Жур  ON ПоступлениеТМЦ.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |	AND ($ПоступлениеТМЦ.Номенклатура IN (SELECT Val FROM #ГруппаНом))

     UNION ALL

     |SELECT
     |	Реализация.IDDOC as[Документ,
		Реализация.IDDocDef as Документ_Вид,
     |	$Реализация.Номенклатура as Номенклатура,
     |	SUM($Реализация.Количество) as КолРеал
		 , 0 AS КолПост
     |FROM
     |	$ДокументСтроки.Реализация AS Реализация
     |INNER JOIN
     |	_1SJOURN AS Жур  ON Реализация.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |	AND ($Реализация.Номенклатура IN (SELECT Val FROM #ГруппаНом))
 ) AS Итоги

Group By Итоги.Документ, Итоги.Документ_Вид, Итоги.Номенклатура
Order By Итоги.Документ 

  
Наверх
wwwICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #4 - 30. Июня 2010 :: 06:06
Печать  
местами перепутал количество реализации и количество поступления в селекте.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #5 - 30. Июня 2010 :: 06:12
Печать  
и не забываем про условие по IDDocDef=Вид
  

1&&2&&3
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #6 - 30. Июня 2010 :: 06:41
Печать  
и еще одна поправка вид документа хранится в журнале

Реализация.IDDocDef as Документ_Вид
и
ПоступлениеТМЦ.IDDocDef  as Документ_Вид

заменить на

Жур.IDDocDef as Документ_Вид,
  
Наверх
wwwICQ  
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #7 - 30. Июня 2010 :: 18:34
Печать  
Спасибо всем огромное буду пробовать!..
  
Наверх
 
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #8 - 18. Июля 2010 :: 12:47
Печать  
Добрый день!
Еще раз спасибо всем кто помогал...
Я долго тормозил с результатом - форсмажор был на работе.
Теперь вот добиваю...

И что-то бред выходит -
Одинэсина мне пишет "Для типизации поля "Документ" не найдено дополнительное типизирующее поле.
Хотя вроде всё на месте


     
     |SELECT Документ  AS [Документ $Документ],
     | Документ_Вид      ,
     | Номенклатура AS [Номенклатура $Справочник.Номенклатура] ,
     | sum(КолПост) AS КолПост,
     | sum(КолРеал) AS КолРеал      
     
     |FROM(
     
     |SELECT
     |      ПоступлениеТМЦ.IDDOC as Документ,
     |Жур.IDDocDef as Документ_Вид,
     |      $ПоступлениеТМЦ.Номенклатура as Номенклатура,  
     |      SUM($ПоступлениеТМЦ.Количество) as КолПост  ,
     |0 as КолРеал
     |FROM
     |      $ДокументСтроки.ПоступлениеТМЦ AS ПоступлениеТМЦ
     |INNER JOIN
     |      _1SJOURN AS Жур  ON ПоступлениеТМЦ.IDDOC = Жур.IDDOC  
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ($ПоступлениеТМЦ.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |GROUP BY
     |    $ПоступлениеТМЦ.Номенклатура, ПоступлениеТМЦ.IDDOC,Жур.IDDocDef
     |
     |UNION ALL      
     |
     |SELECT
     |      Реализация.IDDOC as Документ,  
     |Жур.IDDocDef as Документ_Вид,
     
     |      $Реализация.Номенклатура as Номенклатура ,  
     |      SUM($Реализация.Количество) as КолРеал,
     |0 as КолПост
     |FROM
     |      $ДокументСтроки.Реализация AS Реализация
     |INNER JOIN
     |      _1SJOURN AS Жур  ON Реализация.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ($Реализация.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |GROUP BY
     |    $Реализация.Номенклатура, Реализация.IDDOC,Жур.IDDocDef
     |)AS Итоги
     
     |Group By Итоги.Документ, Итоги.Документ_Вид, Итоги.Номенклатура
     |Order By Итоги.Документ
     
     |";


  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #9 - 18. Июля 2010 :: 14:20
Печать  
Документ_вид - "вид" - чувствительно к регистру.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #10 - 18. Июля 2010 :: 14:45
Печать  
Спасибо!
Ошибку вываливать перестало, но теперь результат -пустую ТЗ показывает....
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #11 - 18. Июля 2010 :: 14:58
Печать  
Итоги.Документ_Вид as Документ_вид
  
Наверх
 
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #12 - 18. Июля 2010 :: 15:18
Печать  
Пустая ТЗ была по невнимательности - в форме не выбрал номенклатуру.... а надо было.

Что имею в результате - работает и в варианте "Итоги.Документ_вид" наверху, и просто "Документ_вид".

А в ТЗ показывает

Реализации, Номенклатуру, КолПост , и КолРеал везде нули....

Документ      | Документ_вид|Номенклатура  |КолПост|КолРеал
Реализация1|1611                |Номенклатура1|5          |0

Поступления не отображаются вообще, хотя КолПост отображаются
и соответствуют реальным кол-вам в поступлениях.
(сегодня писал еще один запрос, с Union All, но к двум регистрам - тоже кол-ва только из одного регистра показывались,
из того который в первом запросе внутри,
еще не победил.
Где-то явно системная ошибка... )
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #13 - 18. Июля 2010 :: 16:24
Печать  
У тебя в первом запросе после поля Номенклатура идет поле "КолРеал", а во втором - "КолПост". Поля во всех запросах дожны идти в одинаковом порядке.

И группировки во внутренних запросах, ИМХО, не нужны, раз ты потом всё еще раз группируешь наверху
  
Наверх
 
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #14 - 18. Июля 2010 :: 17:17
Печать  
Да я пробовал без группировок внутри сначала - сам вверху писал что они не нужны. Только без них не заработало - ругалось что
Column 'ПоступлениеТМЦ.IDDOC' is invalid in the select list because it is not contained in an aggregate function and there is no GROUPE BY clause
- и так на всё что во внутренних селектах....

Местами переставил КолПост и КолРеал... теперь в колонке КолРеал появились количества совершенно не соответствующие Реализациям слева, а КолПост стало по нулям;
Поступления в колонке "Документ" не появились....

     |SELECT Документ  AS [Документ $Документ],
     | Документ_вид      ,
     | Номенклатура AS [Номенклатура $Справочник.Номенклатура] ,
     | sum(КолПост) AS КолПост,
     | sum(КолРеал) AS КолРеал      
     
     |FROM(
     
     |SELECT
     |      ПоступлениеТМЦ.IDDOC as Документ,
     |Жур.IDDocDef as Документ_вид,
     |      $ПоступлениеТМЦ.Номенклатура as Номенклатура,  
     |      SUM($ПоступлениеТМЦ.Количество) as КолПост  ,
     |0 as КолРеал
     |FROM
     |      $ДокументСтроки.ПоступлениеТМЦ AS ПоступлениеТМЦ
     |INNER JOIN
     |      _1SJOURN AS Жур  ON ПоступлениеТМЦ.IDDOC = Жур.IDDOC  
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ($ПоступлениеТМЦ.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |GROUP BY
     |    $ПоступлениеТМЦ.Номенклатура, ПоступлениеТМЦ.IDDOC,Жур.IDDocDef
     |
     |UNION ALL      
     |
     |SELECT
     |      Реализация.IDDOC as Документ,  
     |Жур.IDDocDef as Документ_вид,
     
     |      $Реализация.Номенклатура as Номенклатура ,
     |0 as КолПост,
     |      SUM($Реализация.Количество) as КолРеал

     |FROM
     |      $ДокументСтроки.Реализация AS Реализация
     |INNER JOIN
     |      _1SJOURN AS Жур  ON Реализация.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ($Реализация.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |GROUP BY
     |    $Реализация.Номенклатура, Реализация.IDDOC,Жур.IDDocDef
     |)AS Итоги
     
     |Group By Итоги.Документ, Итоги.Документ_вид, Итоги.Номенклатура
     |Order By Итоги.Документ
     
     |";
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #15 - 18. Июля 2010 :: 19:24
Печать  
не проше ли извлекать данную информацию из регистра остатков тмц?
  
Наверх
wwwICQ  
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #16 - 18. Июля 2010 :: 20:39
Печать  
Подумаю...
тут просто такая штука - надо было по-быстрому написать,
ну я написал на черном запросе, а там по докам было намного быстрее чем по регистру остатки.

На прямой стал кальку делать...
А может действительно на регистре и проще.

__
В любом случае, господа гуру, мне очень помогли все ваши советы -
добил второй запрос с Union All где два регистра у меня -
в конечном итоге  там и правда помогло выстроить по порядку
поля в запросах и теперь всё заработало как надо!

Интересно конечно и этот сделать, с доками (типа спортивный интерес) но тут уж "свой спортивный интерес решай сам"  Улыбка
А чтоб заработало можно и на регистре как проще... если проще.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #17 - 19. Июля 2010 :: 05:35
Печать  
По отдельности каждый из запросов показывает нужную тебе информацию?
  
Наверх
 
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #18 - 19. Июля 2010 :: 05:59
Печать  
Да, показывает
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #19 - 19. Июля 2010 :: 07:05
Печать  
Тогда и этот должен показывать:
Код
Выбрать все
 |SELECT Итоги.Документ  AS [Документ $Документ],
     | Итоги.Документ_вид	,
     | Итоги.Номенклатура AS [Номенклатура $Справочник.Номенклатура] ,
     | sum(Итоги.КолПост) AS КолПост,
     | sum(Итоги.КолРеал) AS КолРеал

     |FROM(

     |SELECT
     |	ПоступлениеТМЦ.IDDOC as Документ,
     |Жур.IDDocDef as Документ_вид,
     |	$ПоступлениеТМЦ.Номенклатура as Номенклатура,
     |	SUM($ПоступлениеТМЦ.Количество) as КолПост  ,
     |0 as КолРеал
     |FROM
     |	$ДокументСтроки.ПоступлениеТМЦ AS ПоступлениеТМЦ
     |INNER JOIN
     |	_1SJOURN AS Жур  ON ПоступлениеТМЦ.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |	AND ($ПоступлениеТМЦ.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |
     |UNION ALL
     |
     |SELECT
     |	Реализация.IDDOC as Документ,
     |Жур.IDDocDef as Документ_вид,

     |	$Реализация.Номенклатура as Номенклатура ,
     |0 as КолПост,
     |	SUM($Реализация.Количество) as КолРеал

     |FROM
     |	$ДокументСтроки.Реализация AS Реализация
     |INNER JOIN
     |	_1SJOURN AS Жур  ON Реализация.IDDOC = Жур.IDDOC
     |WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |	AND ($Реализация.Номенклатура IN (SELECT Val FROM #ГруппаНом))
     |)AS Итоги

     |Group By Итоги.Документ, Итоги.Документ_вид, Итоги.Номенклатура
     |Order By Итоги.Документ

     |"; 

  
Наверх
 
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #20 - 19. Июля 2010 :: 18:40
Печать  
Так и я думал что должен показать.
Такой запрос уже пробовал...

пишет
State 42000 Native 8118...
Column 'ПоступлениеТМЦ.IDDOC' is invalid in the select list because it is not contained in an aggregate function and there is no GROUPE BY clause

и так пишет на всё что во внутренних селектах пока ему GROUPE BY внутри не сделаешь....

(Щас скопипастил прежде чем отвечать запрос из поста 1 в 1 -ругается)
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #21 - 20. Июля 2010 :: 08:29
Печать  
Ааа, ну конечно. Убери суммирование во внутренних запросах.
SUM($ПоступлениеТМЦ.Количество) as КолПост
SUM($Реализация.Количество) as КолРеал
  
Наверх
 
IP записан
 
Malamute
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 29. Июня 2010
Re: Запрос с UNION ALL, 2 вида документов..
Ответ #22 - 20. Июля 2010 :: 20:02
Печать  
Да, так заработало, спасибо!

Код
Выбрать все
	ТекстЗапроса =
	"
	|SELECT Итоги.Документ  AS [Документ $Документ],
	| Итоги.Документ_вид	,
	| Итоги.Номенклатура AS [Номенклатура $Справочник.Номенклатура] ,
	| sum(Итоги.КолПост) AS КолПост,
	| sum(Итоги.КолРеал) AS КолРеал

	|FROM(

	|SELECT
	|	ПоступлениеТМЦ.IDDOC as Документ,
	|Жур.IDDocDef as Документ_вид,
	|	$ПоступлениеТМЦ.Номенклатура as Номенклатура,
	|	$ПоступлениеТМЦ.Количество as КолПост  ,
	|0 as КолРеал
	|FROM
	|	$ДокументСтроки.ПоступлениеТМЦ AS ПоступлениеТМЦ
	|INNER JOIN
	|	_1SJOURN AS Жур  ON ПоступлениеТМЦ.IDDOC = Жур.IDDOC
	|WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
	|	AND ($ПоступлениеТМЦ.Номенклатура IN (SELECT Val FROM #ГруппаНом))
	|
	|UNION ALL
	|
	|SELECT
	|	Реализация.IDDOC as Документ,
	|Жур.IDDocDef as Документ_вид,

	|	$Реализация.Номенклатура as Номенклатура ,
	|0 as КолПост,
	|	$Реализация.Количество as КолРеал

	|FROM
	|	$ДокументСтроки.Реализация AS Реализация
	|INNER JOIN
	|	_1SJOURN AS Жур  ON Реализация.IDDOC = Жур.IDDOC
	|WHERE (Жур.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
	|	AND ($Реализация.Номенклатура IN (SELECT Val FROM #ГруппаНом))
	|)AS Итоги

	|Group By Итоги.Документ, Итоги.Документ_вид, Итоги.Номенклатура
	|Order By Итоги.Документ

	|";
 


Только вот понять не могу.

Такая штука у меня заработала, то есть правильно данные показывает.
(тот самый запрос к двум регистрам который добил по советам в этой ветке)

А ведь там внутри есть SUM


     ТекстЗапроса = "
     |SELECT
     |  Итоги.Склад as [Склад $Справочник.Склады],
     |  Итоги.Номенклатура as [Номенклатура $Справочник.Номенклатура],  
     |  sum(Итоги.КонОстЦентр) as КонОстЦентр,
     |  sum(Итоги.КонРезЦентр) as КонРезЦентр,      
     |  sum(Итоги.КонОстОбразцы) as КонОстОбразцы,
     |  sum(Итоги.КонРезОбразцы) as КонРезОбразцы
     
     |From(      
     |SELECT
     |  Рег.Склад as Склад,
     |  Рег.Номенклатура as Номенклатура,        
     |  SUM(case when Рег.Склад= :ОснСклад  then Рег.КоличествоОстаток else 0 end) as КонОстЦентр,
     | 0 AS КонРезЦентр,
     |  SUM(case when Рег.Склад= :Образцы  then Рег.КоличествоОстаток else 0 end) as КонОстОбразцы,
     | 0 AS КонРезОбразцы
     |FROM
     
     |    $РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,"+СтрокаФильтрНом+
     "
     |AND ( (Склад=:ОснСклад) OR (Склад=:Образцы ) ) ,(Склад,Номенклатура),(Количество)) as Рег
     |GROUP BY
     |      Рег.Склад, Рег.Номенклатура      
     |UNION ALL
     |SELECT
     |  Рег1.Склад as Склад,
     |  Рег1.Номенклатура as Номенклатура,        
     | 0 AS КонОстЦентр,      
     |  SUM(case when Рег1.Склад= :ОснСклад  then Рег1.КоличествоОстаток else 0 end) as КонРезЦентр,
     | 0 AS КонОстОбразцы,
     |  SUM(case when Рег1.Склад= :Образцы  then Рег1.КоличествоОстаток else 0 end) as КонРезОбразцы      
     |FROM
     
     |    $РегистрОстатки.РезервыТМЦ(:ВыбДата~,," +СтрокаФильтрНом+
     "
     |AND ( (Склад=:ОснСклад) OR (Склад=:Образцы ) ) ,(Склад,Номенклатура),(Количество)) as Рег1
     |GROUP BY
     |      Рег1.Склад, Рег1.Номенклатура      
     
     |)AS Итоги
     
     |GROUP BY
     |     Итоги.Склад, Итоги.Номенклатура" ;


(аймсорри не выделил второй код, очень вширь разлезается... а пока не разобрался  - принято здесь его выделять как бон тон или это дело вкуса...)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать