Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Условие в запросе: Приход=0 и Расход=0 (число прочтений - 2004 )
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Условие в запросе: Приход=0 и Расход=0
17. Января 2011 :: 14:07
Печать  
Не могу понять, почему в нижеследующем запросе ничего не показывает, когда ставишь условие
HAVING
|Sum(РегОб.КоличествоПриход)=0 AND Sum(РегОб.КоличествоРасход)=0

Если оставить только условие Sum(РегОб.КоличествоПриход)=0, то выводит все записи, где Приход=0 и Расход<>0. Если оставить второе условие, то наоборот, выводит где Расход=0 и Приход<>0. А мне надо вывести все записи, где Расход=0 и Приход=0. Пробовал оборачивать во вложенный запрос и уже к нему ставить условие, выходит все то же самое...


|SELECT   
     |Рег.Товар as [Товар $Справочник.Товары],
     |Sum(Рег.КоличествоОстаток) as Ост,
     |Sum(РегОб.КоличествоПриход) as Приход,
     |Sum(РегОб.КоличествоРасход) as Расход
     |FROM
     |$РегистрОстатки.ОстаткиТоваров(:КонДата~,," + ФильтрПоСкладу + ",(Товар,Склад),(Количество)) as Рег
     |LEFT JOIN
     клад),(Количество)) as РегОб ON Рег.Товар=РегОб.Товар
     |INNER JOIN
     |$Справочник.Склады as СпрСкл (nolock) ON Рег.Склад=СпрСкл.ID
     |GROUP BY
     |Рег.Товар
     |HAVING
     |Sum(РегОб.КоличествоПриход)=0 AND Sum(РегОб.КоличествоРасход)=0
  
Наверх
 
IP записан
 
Leierkastenmann
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 114
Зарегистрирован: 30. Марта 2007
Re: Условие в запросе: Приход=0 и Расход=0
Ответ #1 - 17. Января 2011 :: 15:06
Печать  
Загляните в профайлер, скорее всего виртуальные таблицы уже "внутри себя" налагают условия на суммы. Это во-первых. А во-вторых, когда делаете левое соединение, то в агрегатных функциях используйте isnull, иначе рискуете получить неверный результат.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Условие в запросе: Приход=0 и Расход=0
Ответ #2 - 18. Января 2011 :: 06:17
Печать  
Таких записей, где одновременно Приход=0 и Расход =0 просто нет при группировке товар и всё тут.
ЗЫ: закомменти хэвинг, они вообще есть ?
Улыбка)
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Условие в запросе: Приход=0 и Расход=0
Ответ #3 - 18. Января 2011 :: 10:42
Печать  
Eprst писал(а) 18. Января 2011 :: 06:17:
Таких записей, где одновременно Приход=0 и Расход =0 просто нет при группировке товар и всё тут.
ЗЫ: закомменти хэвинг, они вообще есть ?
Улыбка)


Дело говорит!
Да и вообще что это за движения где нет не прихода не расхода.
Темболее это я так понимаю Регистр.Остатки.
А у него вроде как нет такого понятия как нулевое движение, вернее у виртуальной таблицы.
Включи отладку и выбери период в середине месяца, и анализируй текст запроса.
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Условие в запросе: Приход=0 и Расход=0
Ответ #4 - 18. Января 2011 :: 14:05
Печать  
Цитата:
закомменти хэвинг, они вообще есть


Есть конечно  Подмигивание

Цитата:
в агрегатных функциях используйте isnull, иначе рискуете получить неверный результат.


Видимо, в этом и было дело. Вот так вроде работает:

     |SELECT  
     |Рег.Товар as [Товар $Справочник.Товары],
     |Sum(Рег.КоличествоОстаток) as Ост,
     |Sum(CASE WHEN РегОб.Товар IS NULL THEN 0 ELSE РегОб.КоличествоПриход END) as Приход,
     |Sum(CASE WHEN РегОб.Товар IS NULL THEN 0 ELSE РегОб.КоличествоРасход END) as Расход
     |FROM
     |$РегистрОстатки.ОстаткиТоваров(:КонДата~,," + ФильтрПоСкладу + ",(Товар,Склад),(Количество)) as Рег
     |LEFT JOIN
     клад),(Количество)) as РегОб ON Рег.Товар=РегОб.Товар
     |GROUP BY
     |Рег.Товар
     |HAVING
     |Sum(CASE WHEN РегОб.Товар IS NULL THEN 0 ELSE РегОб.КоличествоПриход END)=0 AND
     |Sum(CASE WHEN РегОб.Товар IS NULL THEN 0 ELSE РегОб.КоличествоРасход END)=0
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Условие в запросе: Приход=0 и Расход=0
Ответ #5 - 18. Января 2011 :: 14:14
Печать  
заместо case воткни coalesce
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать