Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

функция, которая выбирает товары   Найти похожие ветки 

 
HanIP   (2004-08-31 08:35) [0]

Такой вопрос есть функция, которая выбирает товары по следующему условию: если в текущем месяце есть приход или расход, то вывести эту запись, а если нет то вывести запись, с максимальным периодом и не нулевым  приходом или расходом. Тектс ее таков:CREATE FUNCTION dbo.MainF (@ID_Period int)  
RETURNS Table AS  
     return SELECT  Pr.ID_Prod, Pr.ID_Tov, Pr.Cena, Pr.ID_Edin, Pr.ID_Schet,
                               dbo.Prihod (@ID_Period, Pr.ID_Period, Pr.Prihod) as Prih, dbo.Prihod (@ID_Period, Pr.ID_Period,
                               Pr.Prihod)*cena as P_Summ, dbo.Rashod (@ID_Period, Pr.ID_Period, Pr.Rashod) as Rash,
                               dbo.Rashod (@ID_Period, Pr.ID_Period, Pr.Rashod)*cena as R_Summ,  
                               dbo.Ostatok(Pr.ID_Tov, Pr.Partija,@Id_Period) AS Ost_Nach, (dbo.Ostatok(Pr.ID_Tov, Pr.Partija,@Id_Period)+
                               dbo.Prihod (@ID_Period, Pr.ID_Period, Pr.Prihod)-dbo.Rashod (@ID_Period, Pr.ID_Period, Pr.Rashod))*cena as O_Summ,
                               dbo.Ostatok(Pr.ID_Tov, Pr.Partija,@Id_Period)+dbo.Prihod (@ID_Period, Pr.ID_Period, Pr.Prihod)-
                               dbo.Rashod (@ID_Period, Pr.ID_Period, Pr.Rashod) as Ost, Pr.ID_Period, Pr.Partija,
                               Pr.Cena * dbo.Ostatok(Pr.ID_Tov, Pr.Partija,@Id_period)
                               AS ON_Summ
FROM         dbo.Prod  pr
                                   Where  ((
                                                    (
                                                     (dbo.Rashod (@ID_Period, Pr.ID_Period, Pr.Rashod)<>0)or
                                                     (dbo.Prihod (@ID_Period, Pr.ID_Period, Pr.Prihod)<>0)
                                                    )
                                                    and(Pr.ID_Period=@ID_Period)
                                                  )or
                                                    ( (Pr.Rashod<>0)or
                                                     (Pr.Prihod<>0)and
                                                     (Pr.ID_Period=(select max(P.ID_Period)  from dbo.Prod P where (P.ID_Period<@ID_Period)and(P.ID_Tov=PR.ID_Tov)and(P.Partija=Pr.Partija)
               and (
                                                              (P.Rashod<>0)or
                                                              (P.Prihod<>0)
                                                            )
                                                                           )
                                                   )
                                                  )
                                                 )
еще используются функции Ostatok - остаток на начало месяца(работает это проверно), Rashod - определяет расход товара в текущем месяце, на случай если росхода нет то выводить ноль, Prihod - такая же как и Rashod отолько для прихода. Проблема в том, что выводятся записи с приходом и еще нулевые за прошлый месяц, которые не должны браться, как от этого уйти?, может в условии где ошибка?


 
SolDen   (2004-08-31 15:15) [1]

С ума сойти!



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.056 c
14-1094329805
Viking
2004-09-05 00:30
2004.09.26
Практичный программист - ???


6-1089986806
Jolik
2004-07-16 18:06
2004.09.26
Как определить...


4-1092550731
DillerXX
2004-08-15 10:18
2004.09.26
Как изменить положения курсора мыши, но


4-1092832619
lightix
2004-08-18 16:36
2004.09.26
Получить имя пользователя Win2k


1-1094645424
V l a d i m i r
2004-09-08 16:10
2004.09.26
Создать документ Word