繁体   English   中英

Sql存储过程中的问题

[英]Issue In Sql Stored Procedure

在下面的SQL查询中,当我在条件中的某些值中执行它时显示数据,并且如果我将值放置在[Sp_GrnValuationReportV1]-1,'GR140000001','GR140000009','2014-10-11','2014- 12-25'没有显示任何数据。请帮助我解决此问题。

ALTER PROCEDURE [dbo].[Sp_GrnValuationReportV1] --1,'GR140000001','GR140000009','2014-10-11','2014-12-25'
    -- Add the parameters for the stored procedure here

    @i_LocationID int,
    @i_GrnStartNo varchar,
    @i_GrnEndNo varchar,
    @d_StartDate DATE,
    @d_EndDate DATE
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT DISTINCT GRN.GoodsReceivedNoteNo,GRN.LocationID,GRN.CreatedOn,PO.PurchaseOrderNo,V.VendorName,
    GRN.SupplierInvoiceNo,GRN.SupplierInvoiceDate,SR.LRNO,T.TransporterName,
CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.FreightCharges ), 0.00)
    ELSE Isnull(( OEC.FreightCharges ), 0.00)
END FreightCharge,CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.LoadingCost + GRND.UnloadingCost ), 0.00)
    ELSE Isnull(( OEC.LoadingCost + OEC.UnloadingCost ), 0.00)
END LoadingandUnloadingcharges ,
    P.ProductCode,P.ProductName,GRND.ReceivedQuantity,GRND.RejectedQuantity,GRND.AcceptedQuantity,
    GRND.UnitPrice AS BasicRate,ISNULL( (GRND.UnitPrice*GRND.ReceivedQuantity),0.00) BasicValue,GRND.VAT,CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.FreightCharges ), 0.00)
    ELSE Isnull(( OEC.FreightCharges ), 0.00)
END FreightApportioned,
    CASE
    WHEN Count(GRND.GoodsReceivedNoteID) OVER(partition BY GRND.GoodsReceivedNoteID) > 1 
    THEN Isnull(( GRND.LoadingCost + GRND.UnloadingCost ), 0.00)
    ELSE Isnull(( OEC.LoadingCost + OEC.UnloadingCost ), 0.00)
END LoadingandUnloadingApportioned,ISNULL((GRND.UnitPrice+OEC.FreightCharges+OEC.LoadingCost+OEC.UnloadingCost),0.00)AS TotalCost           
    FROM GoodsReceivedNoteDetail GRND
    LEFT OUTER JOIN GoodsReceivedNote GRN ON GRN.GoodsReceivedNoteID=GRND.GoodsReceivedNoteID 
    LEFT OUTER JOIN PurchaseOrder PO ON PO.PurchaseOrderID=GRN.PurchaseOrderID
    LEFT OUTER JOIN Vendor V ON V.VendorID=PO.VendorID
    LEFT OUTER JOIN SecurityRegister SR ON SR.SecurityRegisterID=GRN.SecurityRegisterID
    LEFT OUTER JOIN Transporter T ON T.TransporterID=SR.TransporterID
    LEFT OUTER JOIN OtherExpenseCost OEC ON OEC.GoodsReceivedNoteID=GRN.GoodsReceivedNoteID 
    LEFT OUTER JOIN Product P ON P.ProductID=GRND.ProductID
    --WHERE   GRN.LocationID=@i_LocationID AND GRN.GoodsReceivedNoteNo>=@i_GrnStartNo AND GRN.GoodsReceivedNoteNo<=@i_GrnEndNo or GRN.CreatedOn>=@d_StartDate AND GRN.CreatedOn<=@d_EndDate
    WHERE  CAST( GRND.CreatedOn AS DATE)>=@d_StartDate AND  GRN.LocationID=1 AND CAST( GRND.CreatedOn AS DATE) <=@d_EndDate  AND GRN.GoodsReceivedNoteNo>=  @i_GrnStartNo AND GRN.GoodsReceivedNoteNo <=@i_GrnEndNo

要在大查询中查找问题,请遵循以下说明

  1. 复制存储过程的主体并将其粘贴到新的查询窗口中
  2. 将select中的列更改为* 我的意思是更改查询以select * from
  3. 在查询顶部声明参数并为其设置值
  4. 开始注释联接并运行查询以查看哪个联接不返回任何行。 您可能需要在where语句中注释相应的条件。

我希望这可以帮助你

提及varchar的大小

@i_GrnStartNo varchar(50),
    @i_GrnEndNo varchar(50),

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM