Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 1sqlite - получение остатков по номенклатуре (число прочтений - 1483 )
poops
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 06. Ноября 2008
1sqlite - получение остатков по номенклатуре
06. Ноября 2008 :: 07:54
Печать  
Собственно, проблема в  следующем: пытаюсь написать запрос, получающий остатки на конец дня по всей номенклатуре по всем складам. Использую следующий запрос:
Код
Выбрать все
SELECT
ОстаткиТМЦ.Номенклатура [Номенклатура :Справочник.Номенклатура],
SUM(ОстаткиТМЦ.Количество) AS КоличествоОстаток
FROM
(SELECT
	ТМЦОстатки.Номенклатура AS Номенклатура,
	ТМЦОстатки.Количество AS Количество		  
FROM
	ТМЦОстатки
WHERE period = :ДатаОстатков

UNION ALL

SELECT
   ТМЦ.Номенклатура AS Номенклатура,
   ТМЦ.Количество*(1-ТМЦ.debkred*2) AS Количество
   FROM
	ТМЦ
  INNER JOIN
	ЖурналОбщий ON ТМЦ.iddoc=ЖурналОбщий.iddoc
AND (ЖурналОбщий.date BETWEEN :ДатаОстатков AND :ДатаЗапроса~)
AND (ЖурналОбщий.ОстаткиТМЦФр=1)
) ОстаткиТМЦ
GROUP BY
	ОстаткиТМЦ.Номенклатура 

где дата остатков это НачМесяца(ДатаЗапроса)
Для контроля использую следующий запрос:
Код
Выбрать все
текстЗапроса="Период с ДатаНачала по ДатаНачала;
	|Номенклатура	= Регистр.ОстаткиТМЦ.Номенклатура;
	|Количество     = Регистр.ОстаткиТМЦ.Количество;
	|Функция КоличествоКонОст		  = КонОст(Количество);
	|Группировка Номенклатура без Групп;";
 


Оба запроса отрабатывают нормально но дают разный результат. Я подозреваю что ошибка в первом запросе Улыбка. Что я не так делаю?
  
Наверх
 
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: 1sqlite - получение остатков по номенклатуре
Ответ #1 - 06. Ноября 2008 :: 08:17
Печать  
Я делаю так:
Код
Выбрать все
SELECT
ОстаткиТМЦ.Номенклатура [Номенклатура :Справочник.Номенклатура],
SUM(ОстаткиТМЦ.Количество) AS КоличествоОстаток
FROM
(SELECT
	ТМЦОстатки.Номенклатура AS Номенклатура,
	ТМЦОстатки.Количество AS Количество		  
FROM
	ТМЦОстатки
WHERE period = :Дата1

UNION ALL

SELECT
   ТМЦ.Номенклатура AS Номенклатура,
   ТМЦ.Количество*(1-ТМЦ.debkred*2) AS Количество
   FROM
	ТМЦ
  INNER JOIN
	ЖурналОбщий ON ТМЦ.iddoc=ЖурналОбщий.iddoc
AND (ЖурналОбщий.date BETWEEN :Дата2 AND :Дата3~)
AND (ЖурналОбщий.ОстаткиТМЦФр=1)
) ОстаткиТМЦ
GROUP BY
	ОстаткиТМЦ.Номенклатура 


где:
Дата1 - начало предыдущего месяца даты остатков
Дата2 - начало месяца даты остатков
Дата3 - дата остатков
  
Наверх
 
IP записан
 
poops
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 06. Ноября 2008
Re: 1sqlite - получение остатков по номенклатуре
Ответ #2 - 06. Ноября 2008 :: 08:26
Печать  
Ок, спасибо, невнимательно курил мануалы Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать