Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Группировка "ВСЕ". Как?!! (число прочтений - 14807 )
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #30 - 02. Апреля 2007 :: 10:28
Печать  
Код
Выбрать все
SELECT
	НоменклатураГруппа.id as [Товар_Группа $Справочник.Номенклатура],
	Номенклатура.id as [Товар $Справочник.Номенклатура],
	Номенклатура.Code as Код,
	SUM(CAST($РегИтоги.ОстатокТовара as NUMERIC(10,2))) as ОстатокТовараКонечныйОстаток
FROM
	$Справочник.Номенклатура as Номенклатура
LEFT JOIN $Справочник.Номенклатура as НоменклатураГруппа ON Номенклатура.parentid = НоменклатураГруппа.id
LEFT JOIN $РегистрИтоги.ОстаткиТоваров as РегИтоги ON $РегИтоги.Товар = Номенклатура.id
WHERE
	(Номенклатура.id  IN (SELECT Val FROM :ВременнаяТаблица))
	AND ($РегИтоги.Склад IN (SELECT Val FROM :ВременнаяТаблица2))
	AND (РегИтоги.PERIOD = :ДатаПериодаОстатков)
	AND ($РегИтоги.Фирма = $ПустойИД)
GROUP BY
	Номенклатура.id, НоменклатураГруппа.id, Номенклатура.Code
 

  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #31 - 02. Апреля 2007 :: 10:32
Печать  
IMHO, алиасы в том числе нужны, чтобы избежать длиных имен, тут же все наоборот.
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #32 - 02. Апреля 2007 :: 10:42
Печать  
artbear писал(а) 30. Марта 2007 :: 12:19:
Вроде spock говорил, что Адвантаж ОЛЕДБ провайдер позволяет виртуальные таблицы Улыбка

Я не так говорил.
Можно заставить работать ВТ на этом провайдере, потому как он по синтаксису языка похож на t-sql. Только в метапарсер добавить некоторые проверки.
Вообще, можно и на vfpoledb v9 сделать, но это того не стоит.
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #33 - 02. Апреля 2007 :: 10:55
Печать  
О, и еще - запрос выше это не "ВСЕ".
Сейчас что-нибудь нарисуем
« Последняя редакция: 02. Апреля 2007 :: 14:06 - spock »  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #34 - 02. Апреля 2007 :: 11:21
Печать  
Код
Выбрать все
SELECT
	НомГр.id as [Товар_Группа $Справочник.Номенклатура],
	Ном.id as [Товар $Справочник.Номенклатура],
	Ном.Code as Код,
	SUM(ДжРегИт.ОстТов) as ОстТовКон
FROM
	$Справочник.Номенклатура as Ном
LEFT JOIN $Справочник.Номенклатура as НомГр ON Ном.parentid = НомГр.id
LEFT JOIN (
	SELECT
		$РегИт.ОстатокТовара as ОстТов,
		$РегИт.Товар as Тов
	FROM $РегистрИтоги.ОстаткиТоваров as РегИт
	WHERE
		(РегИт.PERIOD = :ДатаПериодаОстатков)
		AND ($РегИт.Склад IN (SELECT Val FROM :ВременнаяТаблица2))
		AND ($РегИт.Фирма = $ПустойИД)
		AND ($РегИт.Товар IN (SELECT Val FROM :ВременнаяТаблица))
) as ДжРегИт ON ДжРегИт.Тов = Ном.id
WHERE
	Ном.id IN (SELECT Val FROM :ВременнаяТаблица)
GROUP BY
	Ном.id, НомГр.id, Ном.Code
 

  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #35 - 02. Апреля 2007 :: 12:15
Печать  
Кирилл, а последний запрос это что?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #36 - 02. Апреля 2007 :: 12:18
Печать  
Ну это тоже самое только правильное, по крайней мере, я так думаю Улыбка
  
Наверх
ICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #37 - 02. Апреля 2007 :: 14:00
Печать  
ну, что сказать.... спасибо, что ли....

запрос не заработал, но написал уже новое:

FAILED! ICommandText::Execute(): Operator/operand type mismatch.

но я чувствую, что правильное решиени уже близко!
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #38 - 02. Апреля 2007 :: 14:03
Печать  
[code]SUM(ДжРегИт.ОстТов)[/code] читать как [code]SUM(CAST(ДжРегИт.ОстТов as NUMERIC(10,2)))[/code]
Просто при отстутствии записи в таблице ДжРегИт соотвествующей нужному товару он пытается просуммировать число с NULL и обламывается.
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #39 - 02. Апреля 2007 :: 14:06
Печать  
[quote author=mash link=1175165797/20#38 date=1175522629][code]SUM(ДжРегИт.ОстТов)[/code] читать как [code]SUM(CAST(ДжРегИт.ОстТов as NUMERIC(10,2)))[/code]
Просто при отстутствии записи в таблице ДжРегИт соотвествующей нужному товару он пытается просуммировать число с NULL и обламывается.[/quote]

попробовал. не прокатило. пишет тоже самое.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #40 - 02. Апреля 2007 :: 14:08
Печать  
Ты подзапрос не заменил?
Ном.id IN (SELECT Val FROM :ВременнаяТаблица)
  
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #41 - 02. Апреля 2007 :: 14:13
Печать  
Не то скопировал...пардон

Этот подзапрос не правил?

Код
Выбрать все
SELECT
	$РегИт.ОстатокТовара as ОстТов,
	$РегИт.Товар as Тов
FROM $РегистрИтоги.ОстаткиТоваров as РегИт
WHERE
	(РегИт.PERIOD = :ДатаПериодаОстатков)
	AND ($РегИт.Склад IN (SELECT Val FROM :ВременнаяТаблица2))
	AND ($РегИт.Фирма = $ПустойИД)
	AND ($РегИт.Товар IN (SELECT Val FROM :ВременнаяТаблица))
 



В частности ДатаПериодаОстатков
  
Наверх
ICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #42 - 02. Апреля 2007 :: 14:15
Печать  
spock писал(а) 02. Апреля 2007 :: 14:08:
Ты подзапрос не заменил?
Ном.id IN (SELECT Val FROM :ВременнаяТаблица)


запрос полностью скопировал из поста №34.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #43 - 02. Апреля 2007 :: 14:17
Печать  
подправил  Улыбка нужно было поставить ~~ после датыпериодаостатков. совсем перестал думать - просто начал копировать то что выкладывают!!!

большое спасибо.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #44 - 02. Апреля 2007 :: 14:21
Печать  
рано обрадовался.
группы воводятся только как родитель у позиции. а если нужна вся номенклатура, т.е. вложенность элементов > 2? как?
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать