Главная страница
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.035 c
10-1041176030
epflorov
2002-12-29 20:04
2004.09.26
Ошибки при передаче параметров типа sequence


4-1092297748
sdw_syscoder
2004-08-12 12:02
2004.09.26
USB!


14-1093800846
KilkennyCat
2004-08-29 21:34
2004.09.26
Давно мечтал стать писателем. Вот, мой первый рассказ. Критикуйте


1-1095072110
limon_
2004-09-13 14:41
2004.09.26
поиск в combobox


14-1094333382
olookin
2004-09-05 01:29
2004.09.26
Как смертник скребет по бумаге...