Jayanta Modak Ответов: 1

Хранимая процедура не показывает дату результата мудро. Пожалуйста, помогите мне....


я пишу хранимую процедуру для отчета о запасах товарно-материальных запасов.
он работает нормально, но когда я добавляю предложение where с датой, то он не работает должным образом.
Здесь я использовал два стола
TBL_sale_invdet
(детали продажи)
TBL_pur_invdet
(Детали Покупки)

Я хочу показать результат дата мудрый означает дата мудрый детали запаса
в моей базе данных дата последнего счета продажи такова -
02-03-2018(dd/mm/yyyy)

в моей базе данных последняя дата счета-фактуры покупки-это -
31-10-2017(dd/mm/yyyy)

Когда я запускаю SP date это
02-03-2018 to 02-03-2018 (dd/mm/yyyy)
ничего не показывают в результате.
но когда
31-10-2017 to 02-03-2018 (dd/mm/yyyy)

покажите какой-то результат, но не правильный, покажите только, какой товар соответствует продаже и покупке показать '5' пункт у меня есть '174' пункт
как я могу показать всю дату товара мудро с продажей или покупкой товара или вернуть и то и другое
пожалуйста, помогите мне...........

Что я уже пробовал:

ALTER Proc [dbo].[P_getAllItemStock]
@Sdate date,            
@EDate Date 
as
begin 
select  c.catnm, i.itemnm, i.opnstk, u.untnm,i.itmcod,(i.ITMcgst*2) as StkGSTRate, ISNULL( tp.qty,0) as purchaseQty, ISNULL( TS.qty,0) AS SaleQty ,
ISNULL( tpr.qty,0) as Purchase_Return_QTY,ISNULL( tsr.qty,0) as Sale_Return_QTY , ISNULL(tp.qty, 0) - ISNULL(ts.qty, 0) as Closing_Stock
,ISNULL( i.brate,0) as brat,i.brate * (ISNULL(tp.qty, 0) - ISNULL(ts.qty, 0)) As Amount,lsd.lastSaleDate ,LPD.lastPurchaseDate

  from tbl_item i
    JOIN tblcat  c    ON c.catid=i.ITMcatid
    JOIN tblUnit u    ON u.untid=i.ITMunitid
    join TBL_pur_invdet pd on pd.ItemIDpur=i.itemid
    join TBL_sale_invdet sd on sd.ItemIDsale=i.itemid
    LEFT JOIN (select ItemIDpur  as itemid, sum(PDQty) As qty FROM TBL_pur_invdet  where p_type='P' group by ItemIDpur)  tp  ON i.itemid=tp.itemid
    LEFT JOIN (select ItemIDSALE as itemid, sum(SDQty) As qty FROM TBL_sale_invdet where S_type='S' group by ItemIDsale) ts  ON i.itemid=tS.itemid
    
    LEFT JOIN (select ItemIDpur  as itemid, sum(PDQty) As qty FROM TBL_pur_invdet  where p_type='PR' group by ItemIDpur)  tpr  ON i.itemid=tpr.itemid
    LEFT JOIN (select ItemIDSALE as itemid, sum(SDQty) As qty FROM TBL_sale_invdet where S_type='SR' group by ItemIDsale) tsr  ON i.itemid=tSr.itemid
           
    LEFT JOIN (select ItemIDSALE as itemid, max(SaleInvdt) As lastSaleDate     FROM TBL_sale_invdet where S_type='S' group by ItemIDsale) LSD  ON i.itemid=LSD.itemid
    LEFT JOIN (select ItemIDpur  as itemid, max(purdate)   As lastPurchaseDate FROM TBL_pur_invdet  where P_type='P' group by ItemIDpur)  LPD  ON i.itemid=LPD.itemid
 
   where  CAST( purdate as date ) BETWEEN @Sdate and @EDate and CAST( sd.SaleInvdt as date ) BETWEEN @Sdate and @EDate --and (ISNULL(tp.qty,0)-ISNULL(ts.qty,0))>0
 group by catnm, itemnm, opnstk,untnm,itmcod,ITMcgst,tp.qty,ts.qty,tpr.qty,tsr.qty,brate,lastSaleDate,lastPurchaseDate
  order BY C.catnm
end

1 Ответов

Рейтинг:
2

Member 7870345

Вместо использования CAST используйте CONVERT, который позволяет определить, какой формат следует использовать для сканирования строки

Вместо

CAST(xx as date)

использовать
CONVERT(date,xx, 105)


В документации вы можете увидеть, что 105 означает, что строка находится в формате ДД-ММ-АА


Jayanta Modak

Msg 1035, Уровень 15, Состояние 10, Строка 20
Неправильный синтаксис возле 'бросить', как ожидается, 'как'.

Member 7870345

Пожалуйста, замените CAST( purdate as date ) на CONVERT(date, purdate,105)
и заменить чугун( УР.SaleInvdt как дата ) с конвертировать(дата, СД.SaleInvdt,105).
В общем случае не используйте функцию CAST для преобразования в date вместо этого используйте функцию CONVERT с параметрами дерева для управления тем, как должна интерпретироваться строка.

Jayanta Modak

нет ошибки но результат тот же самый