Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Проблема с Группировкой (число прочтений - 3302 )
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Проблема с Группировкой
05. Ноября 2007 :: 10:56
Печать  
Запрос работает, но группировка не работает. И еще может кто подскажет как поставить условие на пустое значение. В данном запросе не пропускать пустые значения заказ (документ) и Клиент (Справочник)
Код
Выбрать все
|Select
	|	Выб.Фирма as [Фир $Справочник.Фирмы],
|	Выб.Клиент as [Клиент $Справочник.Клиенты],
|	Жур.IDDOC as [Док $Документ],
	|	Жур.IDDOCDEF as Док_вид,
|	Выб.Заказ as [Заказ $Документ],
	|	Выб.СуммаПриход as СуммаПриход,
	|	Выб.ИтогПоФирме as ИтогПоФирме,
	|   Выб.ИтогПоКлиенту ИтогПоКлиенту,
	|	Выб.ИтогПоЗаказу ИтогПоЗаказу,
	|	Выб.ИтогПоПозицияДокумента ИтогПоПозицияДокумента
	|From
	|(
	|Select
	|	Рег.Фирма Фирма,
	|	Рег.Клиент Клиент,
	|	Рег.Заказ Заказ,
	|	Рег.ПозицияДокумента as ПозицияДокумента,
	|	GROUPING(Рег.Фирма)as ИтогПоФирме,
	|	GROUPING(Рег.Клиент)as ИтогПоКлиенту,
	|	GROUPING(Рег.Заказ)as ИтогПоЗаказу,
	|	GROUPING(Рег.ПозицияДокумента)as ИтогПоПозицияДокумента,
	|	Sum(СуммаОснПриход) as СуммаПриход
	|FROM
	|	жения,
	|	,Фирма in (Select val from #СпФирм)and ВидУчета=:ВидУч and --Заказ <> $ПустойИД13 and
	|	Заказ Like $ВидДокумента36.РасходнаяНакладная + '%',
	|	(Фирма,ВидУчета,Клиент,Заказ),СуммаОсн) as Рег
	|Group by
	|	Рег.Фирма, Рег.Клиент, Рег.Заказ, Рег.ПозицияДокумента WITH ROLLUP
	|HAVING Sum(СуммаОснПриход) <> 0
	|)as Выб
	|Inner JOIN
	|	_1SJOURN AS Жур ON Выб.ПозицияДокумента  = Жур.DATE_TIME_IDDOC
	|Inner JOIN
	|	$Справочник.Клиенты as СпрК on СпрК.ID = Выб.Клиент
|Order By
	|	СпрК.Descr, Выб.ИтогПоФирме DESC, Выб.ИтогПоКлиенту DESC,
	|	Выб.ИтогПоЗаказу DESC, Выб.ИтогПоПозицияДокумента DESC
 

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #1 - 05. Ноября 2007 :: 11:03
Печать  
Про пустые значенийя читаем справку:
$ПуcтойИД
  
Наверх
ICQ  
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #2 - 05. Ноября 2007 :: 12:41
Печать  
У меня в ТекстеЗапроса закоментировано Заказ <> ПустойИД13. Все равно пропускает пустые заказы
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Проблема с Группировкой
Ответ #3 - 05. Ноября 2007 :: 22:18
Печать  
Зачем во вложенном запросе это?
GROUPING - WITH ROLLUP
Зачем вообще вложенный запрос?
Попробуй просто то что внутрях, причем без условий на пустой ИД, мот на что-то натолкнет
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #4 - 06. Ноября 2007 :: 14:45
Печать  
Проблема и без вложенного запроса. Данные начинают троится, не указывая на то что это Итог по группе. И вдобавок во вложеном запросе есть возможность сортировать по Grouping
Код
Выбрать все
        |Select
	|	Рег.Фирма as [Фир $Справочник.Фирмы],
	|	Рег.Клиент as [Клиент $Справочник.Клиенты],
	|	Жур.IDDOC as [Док $Документ],
	|	Жур.IDDOCDEF as Док_вид,
	|	Рег.Заказ as [Заказ $Документ],
	| 	Sum(Рег.СуммаОснПриход) as СуммаПриход
	|	GROUPING(Рег.Фирма)as ИтогПоФирме,
	|	GROUPING(Рег.Клиент)as ИтогПоКлиенту,
	|	GROUPING(Рег.Заказ)as ИтогПоЗаказу
	|FROM
	|	жения,
	|	,Фирма in (Select val from #СпФирм)and ВидУчета=:ВидУч and --Заказ <> $ПустойИД13 and
	|	Заказ Like $ВидДокумента36.РасходнаяНакладная + '%',
	|	(Фирма,ВидУчета,Клиент,Заказ),СуммаОсн) as Рег
	|Inner JOIN
	|	_1SJOURN AS Жур ON Рег.ПозицияДокумента  = Жур.DATE_TIME_IDDOC
	|Inner JOIN
	|	$Справочник.Клиенты as СпрК on СпрК.ID = Рег.Клиент
	|Group by
	|	Рег.Фирма, Рег.Клиент, Рег.Заказ, Жур.IDDOC, Жур.IDDOCDEF WITH ROLLUP
	|HAVING (Sum(СуммаОснПриход) <> 0)
 

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



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #5 - 06. Ноября 2007 :: 15:27
Печать  
Почему данные троило я понял. В  Group by есть группировка. Жур.IDDoc, Жур.IDDOCDEF . Тогда такой вопрос, можно ли сделать так, чтобы Жур.IDDoc выводилось, а группировки по нему не делать или делать но без итогов. И остается вопрос, как Итоги делать не снизу а сверху.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Проблема с Группировкой
Ответ #6 - 06. Ноября 2007 :: 16:13
Печать  
Ну правильно, сколько доков - столько и выведет (из-за ИдДок)
А если убрать сумму? Подмигивание
Ну или пропускать итог по ИдДок потом уже...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Проблема с Группировкой
Ответ #7 - 07. Ноября 2007 :: 06:11
Печать  
NickAn писал(а) 06. Ноября 2007 :: 15:27:
Почему данные троило я понял. В  Group by есть группировка. Жур.IDDoc, Жур.IDDOCDEF . Тогда такой вопрос, можно ли сделать так, чтобы Жур.IDDoc выводилось, а группировки по нему не делать или делать но без итогов. И остается вопрос, как Итоги делать не снизу а сверху.

Если не хочешь группировать по виду документа, но тебе нужна типизация, можно сделать так:
Код
Выбрать все
 |Select
	|	Рег.Фирма as [Фир $Справочник.Фирмы],
	|	Рег.Клиент as [Клиент $Справочник.Клиенты],
	|	Жур.IDDOC as [Док $Документ],
	|	MAX(Жур.IDDOCDEF) as Док_вид,
	|	Рег.Заказ as [Заказ $Документ],
	| 	Sum(Рег.СуммаОснПриход) as СуммаПриход
	|	...
	|FROM
	|	...
	|Group by
	|	Рег.Фирма, Рег.Клиент, Рег.Заказ, Жур.IDDOC WITH ROLLUP
	|... 

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



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #8 - 07. Ноября 2007 :: 08:31
Печать  
Спасибо помогло, но не все меня там устраивает. Хотел попробовать Compute, но что то у меня не выходит
  
Наверх
 
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #9 - 07. Ноября 2007 :: 15:49
Печать  
Может кто знает, почему ИтогПоФирме стал в начале таблицы, а ИтогПоКлиенту стал в конце таблицы перед последним Клиентом
Код
Выбрать все
|Select
	|	Рег.Фирма as [Фир $Справочник.Фирмы],
	|	Рег.Клиент as [Клиент $Справочник.Клиенты],
	|	Max(СпрК.Descr) as Клиент_Наименование,
	|	Sum(СуммаОснНачальныйОстаток) as СуммаНачОст,
	|	Жур.IDDOC as [Док $Документ],
	|	MAX(Жур.IDDOCDEF) as Док_вид,
	|	Рег.Заказ as [Заказ $Документ],
	| 	Sum(Рег.СуммаОснПриход) as СуммаПриход,
	| 	Sum(Рег.СуммаОснПриход*0.001) as СуммаБонуса,
	|	GROUPING(Рег.Фирма)as ИтогПоФирме,
	|	GROUPING(Рег.Клиент)as ИтогПоКлиенту,
	|	GROUPING(Рег.Заказ)as ИтогПоЗаказу,
	|   GROUPING(Жур.IDDoc)as ИтогПоДок
	|FROM
	|	жения,
	|	,Фирма in (Select val from #СпФирм)and ВидУчета=:ВидУч and
	|	Заказ Like $ВидДокумента36.РасходнаяНакладная + '%',
	|	(Фирма,ВидУчета,Клиент,Заказ),СуммаОсн) as Рег
	|Inner JOIN
	|	_1SJOURN AS Жур ON Рег.ПозицияДокумента  = Жур.DATE_TIME_IDDOC
	|Inner JOIN
	|	$Справочник.Клиенты as СпрК on СпрК.ID = Рег.Клиент
	|Where ((Right(Заказ,9) <> $ПустойИД)and(Клиент <> $ПустойИД))
	|Group by
	|	Рег.Фирма, Рег.Клиент, Рег.Заказ, Жур.IDDoc WITH ROLLUP
	|HAVING (Sum(СуммаОснПриход) <> 0)
ROLLUP
	|Order By
	|	Рег.Фирма, Клиент_Наименование, Рег.Заказ, Жур.IDDOC,
	|	ИтогПоФирме, ИтогПоКлиенту DESC, ИтогПоЗаказу DESC, ИтогПоДок DESC 


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



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #10 - 08. Ноября 2007 :: 08:05
Печать  
Зменил строку
Код
Выбрать все
Max(СпрК.Descr) as Клиент_Наименование 


на
Код
Выбрать все
Min(СпрК.Descr) as Клиент_Наименование 


и все получилось как надо
  
Наверх
 
IP записан
 
NickAn
Junior Member
**
Отсутствует



Сообщений: 69
Зарегистрирован: 08. Октября 2007
Пол: Мужской
Re: Проблема с Группировкой
Ответ #11 - 13. Ноября 2007 :: 09:13
Печать  
Появилась новая проблема связанная с группировкой!
Есть запрос по регистру. Вытягиваю из него документы которые сделали движение по регистру. Хочу сделать итоги по фирме, вытянуть НачальныйОстаток и Конечный Остаток. Проблема стоит в том, что если я вытягиваю документы(Группировка по Фирме и Док), то НачОст и КонОст выдает не правильно, а если Группировка только по фирме, то НачОст и КонОст выдает правильно. Двумя запросами все выходит, а можно ли сделать одним запросом.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Проблема с Группировкой
Ответ #12 - 14. Ноября 2007 :: 18:52
Печать  
Ну батенько, то ужо боян...
Где ж взять остатки по документам движения?
Или что там в запросе?
  

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